我有一组关键字,我想知道在某个已提交的字符串中是否至少找到了一个关键字。我还想绝对确定它是匹配的关键字,而不是与该词非常相似的东西。
例如,假设我们的关键字是 [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/