我有一个字符串列表,我想在它们上面进行即时短名单。我能够做一个不区分大小写的原始匹配,但我还需要更多。我需要确保当用户输入没有逗号和空格的数字时,我需要将其与输入列表匹配。我把我的问题集减少到了这个JS小提琴:
http://jsfiddle.net/jbragadeesh/hy2e2dkL/2/
HTML
<input type='text' id='textbox'></input>
<ul>
<li>foo</li>
<li>bar</li>
<li>cat</li>
<li>AB 2, 343, 1223,1</li>
<li>Happy Docking 1 2 4</li>
<li>88898889</li>
<li>12abcd34</li>
</ul>
JS
$('#textbox').on('keyup', function(){
keyword = $('#textbox').val();
match_pattern = new RegExp(keyword, 'gi');
$( "li" ).each(function() {
element = $(this);
if(element.text().search(match_pattern) != -1){
element.show();
} else{
element.hide();
}
});
});
现在,当我输入234312231
时,项AB 2, 343, 1223,1
应匹配,当输入为124
时,Happy Docking 1 2 4
应匹配。但是,当我输入1234
时,不应该匹配任何内容(甚至不是最后一个12abcd34
,因为中间有文本)。有人可以为我建议一个正则表达式吗?
答案 0 :(得分:2)
您可以添加replace
方法,以便在查找匹配项时删除,
和空格(应同时应用于match_pattern
和element.text()
):
match_pattern = new RegExp(keyword.replace(/[ ,]/g, ''), 'gi');
if(element.text().replace(/[ ,]/g, '').search(match_pattern) != -1){
请参阅updated demo