我在javascript中使用正则表达式匹配单词。以下表达式使用空格来分隔潜在的匹配项:
/(\W)(foo)(\W)/g
这在大多数情况下都有效,但是当有两个匹配由一个空格分隔时,它会失败。 (例如“foo foo”)我认为这是因为分隔它们的空间是第一场比赛的最后\W
和第二场比赛的第一场。
有没有办法修改此表达式以适用于此边缘情况?
答案 0 :(得分:3)
您可以使用\b
代替\W
。它匹配零宽度字边界(\w
和\W
之间的边界或字符串的开头/结尾,而\W
匹配字符这可能不存在于字符串的开头或结尾。
答案 1 :(得分:1)
Javascript正则表达式已经预见到了,所以你可能会做这样的事情:
/(\W)(foo)(?=\W)/g
我不认为外观可用,但有other techniques that have the same effect。
当然,这在功能上是不同的,因为前瞻不会捕获,因此它取决于您的问题的性质。这里的要点不是它没有捕获,而是它匹配;从而避免你的问题。
答案 2 :(得分:-2)
尝试一下,我认为它适合你:
/(\W)(foo| )(\W)/g
这会告诉正则表达式在两个foo
之间匹配whitespace
或\W
。