正则表达式 - 由逗号分隔的一个或多个字符串

时间:2013-09-13 10:54:37

标签: regex

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

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

foo
bar

任何帮助或正确方向的观点都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

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

那样做。 capturing groups不是必需的,你也可以用非捕获组写这个(效率稍高)

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

为避免重复,您可以使用negative lookahead assertion

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

(注意?而不是* - 如果只能重复一次,那就更有意义了。)

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