正则表达式:不匹配单词列表

LDJ*_*LDJ 1 c# regex

我正在寻找将正则表达式应用于输入字符串,以确保它与预定义值列表不匹配.例如,如果我传入单词Dog,我不希望它匹配.同样对于猫.但是,如果我通过绵羊,它应该匹配.我试过了:

^(?!(Dog)|(Cat))$ << Doesn’t match Dog, Cat or sheep!
^((?!Dog)|(?!Cat))$ << Doesn’t match Dog, Cat or sheep!
^(?!Dog|Cat)$ << Doesn’t match Dog, Cat or sheep!
^(?!Dog)|(?!Cat)$ << matches everything because Dog != Cat for example
Run Code Online (Sandbox Code Playgroud)

基本上,如果我通过"狗",它应该匹配为狗!=狗.但是,如果我准确传递狗或猫,那么它应该不匹配.

我觉得这很容易,但我把头发拉了出来!谢谢

ste*_*ema 8

前瞻断言与任何东西都不匹配.关闭后你需要匹配字符,所以试试吧

^(?!.*Dog)(?!.*cat).*$
Run Code Online (Sandbox Code Playgroud)

在Regexr看到它

它们在msdn上有详细描述

如果您想要准确匹配这些单词,请使用这样的单词边界

^(?!.*\bDog\b)(?!.*\bCat\b).*$
Run Code Online (Sandbox Code Playgroud)

Regexr

\b确保没有字字符之前或之后