用空格或逗号分隔的多个单词的正则表达式

时间:2017-12-14 19:21:10

标签: javascript regex

我试图为逗号或空格分隔的多个字符串创建正则表达式。

Lorem Ipsum // valid
Lorem, Ipsum //valid
Lorem, Ipsum, Ipsum, Ipsum // multiple valid
Lorem // invalid without space/comma

这是我到目前为止所拥有的:

^\w+(,\s*\w+){3}$/

4 个答案:

答案 0 :(得分:3)

您可以使用

^\w+(?:(?:,\s\w+)+|(?:\s\w+)+)$

请参阅regex demo

正则表达式匹配:

  • ^ - 字符串开头
  • \w+ - 1 + word chars
  • (?: - 替换组的开始:
    • (?:,\s\w+)+ - ,,空格,1 +字词
    • | - 或
    • (?:\s\w+)+ - 空白,然后是1个字的字符
  • ) - 小组结尾
  • $ - 字符串结束。

您可以使用前瞻和捕获组来缩短模式:

^\w+(?=(,?\s))(?:\1\w+)+$

请参阅regex demo。这里的差异是(?=(,?\s))(?:\1\w+)+

  • (?=(,?\s)) - 一个积极的先行,检查是否有可选的,,然后是当前位置右侧的空格,并将该序列捕获到第1组
  • (?:\1\w+)+ - 1个或多个序列:
    • \1 - 捕获到第1组的相同文本
    • \w+ - 1 + word chars。

请参阅regex demo

答案 1 :(得分:1)

假设您想匹配整个短语:

^(\w+(,|\s)\s*)+\w+$

应该这样做。

答案 2 :(得分:1)

试试这个正则表达式:

^(\w+[, ]+)*\w+$

答案 3 :(得分:1)

由于以上方法都不适合我,因此我想到了:

/([^,\s]+)/g