正则表达式前瞻逻辑 'OR' - 排除某些模式

Regex lookahead logical 'OR' - to exclude certain patterns

我见过很多执行逻辑与的密码验证示例。 例如,密码必须有

这可以用正则表达式 'positive lookahead' 写成:

var includePattern = @"^(?=.*\d)(?=.*[a-zA-z]).{6,15}$"; 
bool tfMatch = Regex.IsMatch("Password1", includePattern); //
if (tfMatch)
    //continue... valid thus far...

我的问题是我想排除某些组或模式,本质上是在做一个合乎逻辑的 'OR';例如,假设我想匹配(以便在满足以下任一条件时使密码无效):

在 excludePattern 上寻求帮助.. 正面前瞻?否定前瞻?

var excludePattern = @"^( ...xxx...  $"; //<== **** what goes in here??
bool tfMatch = Regex.IsMatch("Pass 666 word", excludePattern); //
if (tfMatch)
    //DONT continue... contains excluded

我正在使用 C# 正则表达式,但任何风格都可以开始。

就像您可以使用多个正向先行检查字符串是否满足多个正向模式一样,您可以在负向先行中交替检查先行中的 none 个交替模式是否与字符串匹配.例如,对于您的

AT LEAST one SPACE FOUND (OR)

at least one single-quote found (OR)

at least one double-quote found (OR)

the string "666" number of the beast

您可以使用

^(?!.* |.*'|.*"|.*666)<rest of your pattern>

https://regex101.com/r/u9BoIl/1