我正在尝试为Javascript编写一段正则表达式来获取单词列表的每个匹配项,但只有当它们被非单词、非数字字符包围时(其中没有任何内容适合/a-zA-Z0-9_/的正则表达式)。然而,到目前为止我想出的正则表达式并不能完全按照我想要的方式工作。它仍然允许侧面使用数字,并且还包括单词两侧的字符。这是我现在拥有的正则表达式:
new RegExp("(?:^|\\W)(task|end|if|then)(?:\\W|$)", "gm")
这是我想用它来做什么的示例字符串:
task test()
if true then
print "hi"
end
end
我应该做什么?请记住,这是 JavaScript,因此正则表达式中没有向后查找的功能。
最佳答案
如果我理解正确,您只想捕获 task
、end
、if
、then
如果它们单独出现,两边没有任何内容(整个单词,周围没有数字)。为此,只需使用 \b
字边界:
\b(task|end|if|then)\b
工作示例:http://regex101.com/r/uM3zI6
如果这不是您的意思,请更新您的问题以阐明您想要匹配的示例。
关于Javascript 正则表达式被非单词字符包围,不包括周围环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21101890/