JavaScript Regex将字符串拆分为单词

时间:2019-10-01 16:17:20

标签: javascript regex

我有以下正则表达式

console.log("Test #words 100-200-300".toLowerCase().match(/(?:\B#)?\w+/g))

从上面您可以看到它正在拆分“ 100-200-300”。我希望它忽略“-”并使单词完整,如下所示:

--> ["test", "#words", "100-200-300"]

我需要使用正则表达式来保持相同的规则,除了不拆分与“-”相关的单词

1 个答案:

答案 0 :(得分:4)

对于您当前的示例,您可以匹配一个可选的<View>,1个以上字符的字符,并重复0+次以再次匹配#和1个以上字符的部分。

#
  • #?\w+(?:-\w+)* 可选#?
  • # 1个以上的字符
  • \w+分组重复0+次,匹配(?:-\w+)*和1+个单词字符

Regex demo

-

关于console.log("Test #words 100-200-300".toLowerCase().match(/#?\w+(?:-\w+)*/g)); anchor(以下是从链接中提取的文字)

  

\ B是\ b的否定版本。 \ B在\ b的每个位置都匹配   才不是。有效地,\ B在两个单词之间的任意位置匹配   字符以及两个非单词字符之间的任何位置。

如果您确实想使用该锚,请查看例如匹配with \Bwithout \B上的一些差异