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

标签 javascript regex

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

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

这是我到目前为止所拥有的:
^\w+(,\s*\w+){3}$/

最佳答案

您可以使用

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

regex demo .

正则表达式匹配:
  • ^ - 字符串开头
  • \w+ - 1+字字符
  • (?: - 轮换组的开始:
  • (?:,\s\w+)+ - , , 空格, 1+ word chars
  • | - 或
  • (?:\s\w+)+ - 空格,然后是 1+ 个单词字符
  • ) - 组结束
  • $ - 字符串结束。

  • 您可以使用前瞻和捕获组来缩短模式:
    ^\w+(?=(,?\s))(?:\1\w+)+$
    

    regex demo .这里的区别是(?=(,?\s))(?:\1\w+)+ :
  • (?=(,?\s)) - 检查是否有可选的 , 的正向前瞻然后是紧邻当前位置右侧的空格,并将该序列捕获到第 1 组
  • (?:\1\w+)+ - 1 个或多个序列:
  • \1 - 相同的文本被捕获到第 1 组
  • \w+ - 1+字字符。

  • regex demo .

    关于javascript - 用空格或逗号分隔的多个单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47820687/

    相关文章:

    javascript - 如何将表格内容发送到 Controller

    javascript - 除了 PHP 或 JavaScript 之外,浏览器还有转义字符吗?

    javascript - 在动态设置的特定位置使用正则表达式替换字符串

    java rowfilter 正则表达式 区域设置

    javascript - 在 Typescript 中模拟 Object.defineProperties

    javascript - NS_ERROR_FAILURE : Failure in Firefox

    javascript - 如果视频 = 持续时间则停止并快退

    php - 从php中的字符串中提取正 float 和负 float

    regex - 需要正则表达式 - 没有美分的美元

    Java 正则表达式 : Find returns true but one of the group() fails to return value