0

新手正则表达式问题在这里。

我需要一个接受以下一个或多个字符串的正则表达式。如果有多个字符串,则需要用逗号分隔。

foo
bar

任何帮助或正确方向的观点将不胜感激。

4

1 回答 1

2
^(foo|bar)(,(foo|bar))*$

这样做。捕获组不是必需的,您也可以将非捕获组写成(效率稍高)为

^(?:foo|bar)(?:,(?:foo|bar))*$

为避免重复,您可以使用否定的前瞻断言

^(foo|bar)(?:,(?!\1)(?:foo|bar))?$

(注意?代替*- 如果只有一次重复是可能的,这更有意义。)

当要检查更多数量的字符串时,这种方法很快就会变得复杂。虽然理论上也可以使用正则表达式来做到这一点,但这可能不是一个好主意。

于 2013-09-13T10:56:34.763 回答