我有以下正则表达式匹配井号后的任何数字。
(^|\W)#(\d+)(\W|$)
我有以下文字
#123321
#123321
#123321
#123321
将此内容粘贴到http://regexpal.com/中,注意正则表达式如何仅匹配所有其他#number。如何使正则表达式匹配每个实例?
答案 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为我工作