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

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 .


    评论关闭
    IT序号网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!