在JavaScript regexp中,我可以使用什么代替\ b来获得相同的效果,但可以使用连字符?
(这个问题针对熟悉\ b和连字符的读者,因此不提供示例。)
更新
Addison&#39; (?<!-)\b(?!-)
here是PCRE的部分解决方案。它-500
losing the boundary \b delivers doesn't work不符合{{3}}。它是{{3}}无外观的JavaScript。
答案 0 :(得分:1)
您无法在JavaScript等不支持lookbehind的正则表达式中创建自己的\b
版本。 \b
在某个位置匹配。它需要在该位置之前和之后检查字符(或缺少字符)以确定该位置是否应该匹配。这需要前瞻和后瞻。
您可以将带连字符的单词(仅限ASCII)与此正则表达式匹配:
\b[a-zA-Z\-]+\b
此正则表达式允许在单词前后使用连字符,但不包括匹配中的连字符。
答案 1 :(得分:0)
我会考虑使用\b
表达式,但修改它会更加挑剔。向其添加一个否定的lookahead and lookbehind,以便它不会出现在爆炸旁边:
(?<!-)\b(?!-)
请注意,这可能会导致-500
等字词出现问题,具体取决于您想要的行为。您可能希望在连字符之前或之后存在边界(或根本不存在)。
正则表达式变得复杂得多,因为在连字符之前通常没有边界,这意味着必须添加一个边界。
(?<!-)\b(?!-)|\B(?=-\w)
第二个条件在存在非单词边界,后跟连字符和单词字符的地方添加边界。这是非常明确的,但这是它发生的唯一情况。