我有以下正则表达式
console.log("Test #words 100-200-300".toLowerCase().match(/(?:\B#)?\w+/g))
从上面您可以看到它正在拆分“ 100-200-300”。我希望它忽略“-”并使单词完整,如下所示:
--> ["test", "#words", "100-200-300"]
我需要使用正则表达式来保持相同的规则,除了不拆分与“-”相关的单词
答案 0 :(得分:4)
对于您当前的示例,您可以匹配一个可选的<View>
,1个以上字符的字符,并重复0+次以再次匹配#
和1个以上字符的部分。
#
#?\w+(?:-\w+)*
可选#?
#
1个以上的字符\w+
分组重复0+次,匹配(?:-\w+)*
和1+个单词字符
-
关于console.log("Test #words 100-200-300".toLowerCase().match(/#?\w+(?:-\w+)*/g));
anchor(以下是从链接中提取的文字)
\ B是\ b的否定版本。 \ B在\ b的每个位置都匹配 才不是。有效地,\ B在两个单词之间的任意位置匹配 字符以及两个非单词字符之间的任何位置。
如果您确实想使用该锚,请查看例如匹配with \B和without \B上的一些差异