正则表达式匹配字符串可能或不可能以“The”,“A”或“An”开头

时间:2014-04-13 18:23:18

标签: javascript jquery regex regex-lookarounds

我正在开发一个乐队的搜索引擎,我想这样做,以便用户不需要输入文章来找到乐队。因此,例如,如果有人想要找到“The Black Keys”,他们可以通过输入“Bla”,“Black Keys”,“The Black Keys”或任何类似的变体来找到它们。以下是我到目前为止的情况:

matcher = new RegExp( '^(?<=the)'+searchstring, 'i' );

1 个答案:

答案 0 :(得分:2)

这是一个开始:

var tags = ["c++", "java", "the php", "coldfusion", "a javascript", "asp", "the ruby"];
$("#autocomplete").autocomplete({
    source: function (request, response) {
        var matcher = new RegExp("^(?:(the|a) )?" + $.ui.autocomplete.escapeRegex(request.term), "i");
        response($.grep(tags, function (item) {
            return matcher.test(item);
        }));
    }
});

正则表达式被修改为:

  • ^ - 单词的开头
  • (?: - 开始非捕获组
  • (the|a) - 您的文章列表
  • - 单词之间的空格
  • )?关闭非捕获组并将其设为可选。

工作fiddle