我有一个关键字数组,我想知道在已提交的某个字符串中是否至少找到了一个关键字。我还想绝对确定匹配的是关键字,而不是与单词非常相似的东西。
例如,我们的关键字是 [English, Eng, En]
因为我们正在寻找英语的一些变体。
现在,假设用户的输入是 i h8 eng class
,或同样挑衅和文盲的东西 - 然后是 eng
应该匹配。它也应该无法匹配像 england
这样的词。或者一些奇怪的事情chen
,即使它有 en
位。
因此,在我极度缺乏智慧的情况下,我相信我可以按照以下方式做一些事情,以便将我的数组项之一与输入相匹配:
.match(RegExp('\b('+array.join('|')+')\b','i'))
考虑到正则表达式会从数组中寻找匹配项,现在呈现为 (English|Eng|En)
然后查看两边是否有零宽度字边界。
最佳答案
您需要加倍反斜杠。
当您使用 RegExp()
构造函数创建正则表达式时,您将传入一个字符串。 JavaScript 字符串常量语法还 将反斜杠视为元字符,用于引号等。因此,反斜杠将在 RegExp() 之前有效地去除
代码甚至可以运行!
通过将它们加倍,解析字符串的步骤将在后面留下一个反斜杠。然后 RegExp()
解析器将在“b”之前看到单个反斜杠并执行正确的操作。
关于javascript - 字边界问题 (\b),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9603892/