我有一系列关键字,我想知道在一些已提交的字符串中是否找到至少一个关键字.我还想确保它是匹配的关键字,而不是与单词非常相似的关键字.
比如说,我们的关键字是[English, Eng, En]因为我们正在寻找一些英语变体.
现在,假设来自用户的输入是i h8 eng class,或同样具有挑衅性和文盲的东西 - 那么eng应该匹配.它也应该无法匹配一个单词england或一些奇怪的东西chen,即使它en有点.
所以,在我无限缺乏智慧的过程中,我相信我可以按照这一点做一些事情,以便将我的一个数组项与输入相匹配:
.match(RegExp('\b('+array.join('|')+')\b','i'))
Run Code Online (Sandbox Code Playgroud)
考虑到正则表达式将从数组中查找匹配,现在呈现为(English|Eng|En),然后查看是否在任一侧都有零宽度的单词边界.
你需要加倍反斜杠.
使用RegExp()构造函数创建正则表达式时,您将传入一个字符串.JavaScript字符串常量语法也将反斜杠视为元字符,用于引用引号等.因此,在代码运行之前,反斜杠将被有效地删除RegExp()!
通过加倍它们,解析字符串的步骤将留下一个反斜杠.然后RegExp()解析器将在"b"之前看到单个反斜杠并做正确的事情.