我正在使用 jQuery。我必须检查给定的单词列表是否在段落中。我想要一个单词或短语的精确匹配(整个单词匹配)。即,如果我在“Be a bee”中搜索“be”,则只有一个匹配项。我就是这样做的。
var searchText="tool,media,be,team";
var regexExactMatch = new RegExp('\^' + searchText.split(",").join("|") + '\$');
if (regexExactMatch.test(item.Name))
{
//Found
}
它适用于一个搜索词,即不带任何逗号(例如:媒体)。 但对于逗号分隔的搜索,它会中断。
如何对多个搜索词进行精确匹配搜索。我对正则表达式非常陌生。另外,我必须对整数和日期进行相同的搜索(MM/dd/yyyy
)。提前致谢。
最佳答案
对于完整输入字符串匹配使用
new RegExp('^(?:' + searchText.split(",").join("|") + ')$');
^^^ ^
对于整个单词搜索,请将 ^
和 $
替换为 \b
:
new RegExp('\\b(?:' + searchText.split(",").join("|") + ')\\b');
否则, anchor 仅分别应用于第一个和最后一个替代方案(即您的正则表达式将类似于 /^tool|media|be|team$/
寻找 tool
仅在开头,media
和 be
位于字符串中的任意位置,team
仅位于字符串末尾。
注意我使用的是(?:...)
非捕获组,因为这里只需要分组,而不是捕获(不存储子匹配)。如果需要访问匹配的文本,可以访问等于整个匹配的第 0 组。
此外,您不需要 ^
和 $
之前的那些 \
,它们根本不是必需的,在构造函数中会被忽略表示法,因为没有像 \^
和 \$
这样的转义序列。
关于javascript - 使用 jQuery 正则表达式精确匹配多个搜索词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34198021/