查找从给定搜索字符串开始的单词数 - Regex

时间:2012-07-11 14:18:41

标签: javascript jquery

我正在使用正则表达式搜索酒店列表。有“测试酒店广场”,“测试2新酒店广场”,“广场酒店”等名称....

基本上我的要求是如果用户输入广场,那么所有的酒店应该填充包含“广场”...但是如果用户输入“aza”,则不应该填充结果。总之,在给定的字符串中,我需要找到是否有以用户输入的字符串开头的单词,如果是,则显示结果。

这是一个我被困住但无法正常工作的代码。

var regex = new RegExp("/\b"+searchString, "gi");
if (mainString.match(regex))
{
    return true;
}

这是有效的,但即使它是中间字符或任何我不想要的位置,也会发现所有事件。

var regex = new RegExp(searchString , "gi");
if (mainString.match(regex))
{
    return true;
}

1 个答案:

答案 0 :(得分:1)

当像这样调用RegExp构造函数时,正则表达式不是用斜杠(/.../)括起来的,但是你的字符串中有一个前导斜杠。另外,转义序列反斜杠需要自己转义,所以你应该使用的是

var regex = new RegExp("\\b"+searchString, "gi");

修改

是的,因为\b是相对于[A-Za-z0-9_]定义的,所以当涉及到非ASCII字符时,这确实存在问题。您可以使用或多或少复杂的外观来解决它,但是一个更容易解决的问题就是说searchString应该在开头或者在空白字符后面找到var regex = new RegExp("(?:^|\\s)"+searchString, "gi"); / EM>:

{{1}}