2011-03-08 24 views
0

我有一个小脚本,它接受来自文本输入的值并需要部分或完全匹配数组中的项目。正则表达式:Match部分或完整字符串

我正在努力与正则表达式和语法,并想知道如果我可以挑选你的大脑。

for (var i=0; i < liveFilterData.length; i+=1) { 

    if (liveFilterData[i].match(liveFilter.val())) { 
     alert(); 
    } 
} 

我需要liveFilter.val()和正则表达式以匹配当前的数组项liveFilterData [I]因此,如果在H或在文本框中ħ有人类型,它会检查是否有在匹配项阵列。如果他们输入他或他然后它匹配头,标题或标题。

对不起,我已经浏览了网络上关于如何构建正则表达式,但我无法解决它。

回答

1

简单的字符串比较shold做的伎俩:

for (var v, i = liveFilterData.length; i--;) { 
    if (liveFilterData[i].slice (0, (v = liveFilter.val().toLowerCase()).length) === v) { 
     alert(); 
    } 
} 

liveFilterData应包含小写的话。

0

我不确定我完全理解这个问题。 liveFilter.val()是一个正则表达式,还是只是一个字符串,你试图匹配数组中的任何值?我猜你在文本框的按键,keydown或按键上有一个事件,并且上面编写的代码在此事件的回调中运行。如果是这样,有很多事情可以将值转换为合适的正则表达式:"^"+liveFilter.val(),由于您在循环中使用正则表达式,因此您应该使用new RegExp进行预编译,因此您的循环看起来像这样:

//the i in the second param here is a flag indicating case insensitive 
//a hat '^' in regex means 'beginning of the input' 
regex = new RegExp("^"+liveFilter.val(), i); 
for (var i=0; i < liveFilterData.length; i+=1) { 
    // regex.test uses the precompiled regex, and determines if there is a match 
    if (regex.test(liveFilterData[i])) { 
     alert("matched " + i); 
    } 
} 

希望这会有所帮助!

相关问题