javascript - 字边界问题 (\b)

标签 javascript regex

我有一个关键字数组,我想知道在已提交的某个字符串中是否至少找到了一个关键字。我还想绝对确定匹配的是关键字,而不是与单词非常相似的东西。

例如,我们的关键字是 [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/

相关文章:

javascript - 创建扑克牌

javascript - 当我们使用 JavaScript 单击下一个或上一个按钮时,图像幻灯片计时器速度会增加

python - 在 Python 中,如何拆分字符串并保留分隔符?

javascript - Java:Java 中 JavaScript localeCompare() 的替代方案是什么?

javascript - Dropzonejs : change maxFiles programmatically

javascript - 无法读取 Protractor 中元素的未定义属性 'click'

sql - 将字符串拆分成行Oracle SQL

excel - 仅提取 8 位数字且后面不包含字符 (., @)

javascript - 无法理解 javascript 正则表达式的结果

c# - 检测用于创建 RegEx 的文件名模式