如何防止正则表达式匹配javascript中的所有其他匹配项

时间:2015-09-21 20:25:23

标签: javascript regex

我有以下正则表达式匹配井号后的任何数字。

(^|\W)#(\d+)(\W|$)

我有以下文字

#123321
#123321
#123321
#123321

将此内容粘贴到http://regexpal.com/中,注意正则表达式如何仅匹配所有其他#number。如何使正则表达式匹配每个实例?

2 个答案:

答案 0 :(得分:4)

您需要使用多行标记:

/(^|\W)#(\d+)($|\W)/mg
                    ^

请参阅demo

多行标记强制^在行的开头匹配,$在行的末尾匹配。还建议将$作为替换的第一个元素,尽管在这种情况下,它不是一个大问题,因为您只匹配一个\W

要在一行上启用多个值的搜索,请使用正则表达式的版本,并使用预告:

/(^|\W)#(\d+)(?=$|\W)/mg
             ^------^

甚至更短:

/(^|\W)#(\d+)(?!\w)/mg

请参阅another demo

前瞻不会消除字符,它只会检查数字后的行尾或非单词字符存在,然后它将能够在下一次迭代中检查相同的字符。

答案 1 :(得分:0)

在表达式的末尾添加全局和多行标记/(^|\W)#(\d+)(\W|$)/gm。在regexr.com为我工作