我以前没有使用过正则表达式的经验,这就是为什么我需要您的帮助。
我有3种不同的Web服务,正在通过实时搜索来获取数据。这是我要执行的陈述的逻辑。
if(carName is entered) {
getCarName.php?text=blablabla
} elseif (carModel is entered) {
getCarModel.php?text=blablabla
} elseif (carNumer is entered) {
getCarNumber.php?text=1337
}
这个想法是,如果输入
carName
,它可以是一个简单的字符串,例如Pontiac Firebird 2002
,那么carModel
可以是OHC inline-6 and a single-barrel carburetor
。 carName和carModel可以包含字符和数字。 carNumber
可以具有仅数字值,例如194378
。我已经开始评估
regexr.com
网站,但仍然没有想出可能的解决方案。我想要1个输入字段(搜索字段)。我有不同的3个Web服务。我正在对1个Web服务(carName)进行实时搜索。它工作正常,但是我想做一个正则表达式语句来查找在输入搜索字段中何时输入carName或carModel甚至是carNumber。我该怎么办?
例如,这是我实时搜索carName Web服务的代码片段:
$('#search').keyup(function() {
var searchField = $('#search').val();
var $update = $('#update');
$.get("getCarName.php?text=" + searchField, function(data) {
$update.empty();
var vals = jQuery.parseJSON(data);
if($.isArray(vals['Car'])) {
$.each(vals['car'], function(k,v){
$update.append("<li value='"+v['id']+"'><a href='#'>" + v['car_name'] + "</a></li>");
});
} else {
$update.append("<li value='"+vals['car']['id']+"'><a href='#'>" + vals['car']['car_name'] + "</a></li>");
}
});
});
基于上面的代码,我想创建一个if / else语句来根据输入字符串确定它应该使用哪种Web服务。
根据regexr.com,可以通过以下方式实现carName和carModel:
abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789
和carNumber来自:
0123456789
购买如何根据此条件创建If / Else条件?
可以请任何人帮我吗?
最佳答案
可能的建议:
1)您可以仅通过此正则表达式'carNumber
'来跟踪输入字符串是否仅包含数字(表示输入了[\d]+
)。
2)如果输入不仅包含数字,还可以创建一个数组或包含所有可能的汽车制造商名称的清单,并查看输入字符串中是否有匹配的单词。如果匹配,则按CarName
搜索
3)如果以上均未应用-输入CarModel
这是一个可行的例子
var string = 'your input 2014';
var regex = /[\D]+/;
var carsArray = ["Nissan", "Pontiac", "Other one"];
function findInArray(a, s)
{
for( var i = 0; i < a.length; ++i )
if( a[i].indexOf( s ) >= 0 )
return i;
return -1;
}
if (regex.exec(string)) {
//there are NOT only numbers
if (findInArray(carsArray, string) == '-1') {
//carModel entered!
}else{
//carName entered!
}
} else {
//carNumber entered!
}