我正在尝试为用逗号或空格分隔的多个字符串创建正则表达式。
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 .