我试图为逗号或空格分隔的多个字符串创建正则表达式。
Lorem Ipsum // valid
Lorem, Ipsum //valid
Lorem, Ipsum, Ipsum, Ipsum // multiple valid
Lorem // invalid without space/comma
这是我到目前为止所拥有的:
^\w+(,\s*\w+){3}$/
答案 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