正则表达式 - 不止一个“不包含”/“包含”

时间:2013-09-05 13:04:12

标签: regex

我需要一些“包含”和“不包含”的正则表达式。 通常我会写:

包含:((。* WORD_A。*))$ 和 不包含:(^((?!WORD_A)。)*)$

如果单独使用,这可以正常工作,但我想写一些可以检测到的东西。喜欢 “包含单词A和单词B”(顺序不相关!) 和 “包含单词A,但不包含单词B。”

基本上我希望用户可以这样做一个语句“以单词A开头,包含单词B,但不包含C和/或以D结尾”,程序返回true / false。 最好的方法就是附加正则表达式。 这可能吗?我无法理解。

1 个答案:

答案 0 :(得分:4)

对于您的示例,我会像这样使用lookahead assertions

^WORD_A(?=.*WORD_B)(?!.*WORD_C).*WORD_D$

如果需要,您可以随时添加更多条件(只需添加另一个前瞻)。例如,如果要匹配包含WORD_A和WORD_B且不包含WORD_C和WORD_D的任何字符串:

^(?=.*WORD_A)(?=.*WORD_B)(?!.*WORD_C)(?!.*WORD_D)