Javascript正则表达式匹配带有空格和逗号的单词和数字的模式

时间:2015-05-22 12:08:34

标签: javascript html regex

我有一个字符串列表,我想在它们上面进行即时短名单。我能够做一个不区分大小写的原始匹配,但我还需要更多。我需要确保当用户输入没有逗号和空格的数字时,我需要将其与输入列表匹配。我把我的问题集减少到了这个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,因为中间有文本)。有人可以为我建议一个正则表达式吗?

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以添加replace方法,以便在查找匹配项时删除,和空格(应同时应用于match_patternelement.text()):

match_pattern = new RegExp(keyword.replace(/[ ,]/g, ''), 'gi');
if(element.text().replace(/[ ,]/g, '').search(match_pattern) != -1){

请参阅updated demo