javascript - 使用 jQuery 正则表达式精确匹配多个搜索词

标签 javascript regex

我正在使用 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 仅在开头,mediabe 位于字符串中的任意位置,team 仅位于字符串末尾。

注意我使用的是(?:...)非捕获组,因为这里只需要分组,而不是捕获(不存储子匹配)。如果需要访问匹配的文本,可以访问等于整个匹配的第 0 组。

此外,您不需要 ^$ 之前的那些 \,它们根本不是必需的,在构造函数中会被忽略表示法,因为没有像 \^\$ 这样的转义序列。

关于javascript - 使用 jQuery 正则表达式精确匹配多个搜索词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34198021/

相关文章:

javascript - 如何缩短 Ext JS 上模型的数据绑定(bind)?

regex - 如何在 python 正则表达式中获得所有可能的子组?

java - 是否有 CheckStyle 规则强制 if else 关键字在 if/else 阶梯中位于同一行?

对于随机查找,JavaScript Map 比 Object 慢得多?

javascript - 从 vuex 状态数组中创建计算属性数组以在 v-model 中使用

javascript - 表单验证与独立指令相结合正在删除范围值

javascript - 我应该什么时候开始和结束我的node.js SQL 连接?我应该从一开始就使用池化吗?

正则表达式捕获可选标记后的所有内容

c# - 将规范化的电话号码转换为用户友好的版本

正则表达式:获取我所有文档中使用的所有主题标签和提及