我正在使用正则表达式搜索酒店列表。有“测试酒店广场”,“测试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;
}
答案 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}}