Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
新手正则表达式问题在这里。
我需要一个接受以下一个或多个字符串的正则表达式。如果有多个字符串,则需要用逗号分隔。
foo bar
任何帮助或正确方向的观点将不胜感激。
^(foo|bar)(,(foo|bar))*$
这样做。捕获组不是必需的,您也可以将非捕获组写成(效率稍高)为
^(?:foo|bar)(?:,(?:foo|bar))*$
为避免重复,您可以使用否定的前瞻断言:
^(foo|bar)(?:,(?!\1)(?:foo|bar))?$
(注意?代替*- 如果只有一次重复是可能的,这更有意义。)
?
*
当要检查更多数量的字符串时,这种方法很快就会变得复杂。虽然理论上也可以使用正则表达式来做到这一点,但这可能不是一个好主意。