新手正则表达式问题在这里。
我需要一个接受以下一个或多个字符串的正则表达式。如果有多个字符串,则需要用逗号分隔。
foo
bar
任何帮助或正确方向的观点都将受到赞赏。
答案 0 :(得分:2)
^(foo|bar)(,(foo|bar))*$
那样做。 capturing groups不是必需的,你也可以用非捕获组写这个(效率稍高)
^(?:foo|bar)(?:,(?:foo|bar))*$
为避免重复,您可以使用negative lookahead assertion:
^(foo|bar)(?:,(?!\1)(?:foo|bar))?$
(注意?
而不是*
- 如果只能重复一次,那就更有意义了。)
当要检查更多数量的字符串时,这种方法很快变得复杂。虽然理论上也可以用正则表达式做到这一点,但这可能不是一个好主意。