正则表达式前瞻逻辑 'OR' - 排除某些模式
Regex lookahead logical 'OR' - to exclude certain patterns
我见过很多执行逻辑与的密码验证示例。
例如,密码必须有
- 至少一位数字 (AND)
- 至少一个字符 (AND)
- 长度在 6 到 15 之间
这可以用正则表达式 'positive lookahead' 写成:
var includePattern = @"^(?=.*\d)(?=.*[a-zA-z]).{6,15}$";
bool tfMatch = Regex.IsMatch("Password1", includePattern); //
if (tfMatch)
//continue... valid thus far...
我的问题是我想排除某些组或模式,本质上是在做一个合乎逻辑的 'OR';例如,假设我想匹配(以便在满足以下任一条件时使密码无效):
- 至少找到一个 SPACE(或)
- 至少找到一个单引号 (OR)
- 至少找到一个双引号 (OR)
- 兽的数字字符串“666”
在 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>
我见过很多执行逻辑与的密码验证示例。 例如,密码必须有
- 至少一位数字 (AND)
- 至少一个字符 (AND)
- 长度在 6 到 15 之间
这可以用正则表达式 'positive lookahead' 写成:
var includePattern = @"^(?=.*\d)(?=.*[a-zA-z]).{6,15}$";
bool tfMatch = Regex.IsMatch("Password1", includePattern); //
if (tfMatch)
//continue... valid thus far...
我的问题是我想排除某些组或模式,本质上是在做一个合乎逻辑的 'OR';例如,假设我想匹配(以便在满足以下任一条件时使密码无效):
- 至少找到一个 SPACE(或)
- 至少找到一个单引号 (OR)
- 至少找到一个双引号 (OR)
- 兽的数字字符串“666”
在 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>