【发布时间】:2019-09-02 17:48:28
【问题描述】:
我见过很多执行逻辑与的密码验证示例。 例如,密码必须有
- 至少一位数 (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)
- 找到至少一个双引号 (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# 正则表达式,但任何风格都可以开始使用。
【问题讨论】:
-
只是消极的前瞻来寻找你想要排除的模式之间的交替?
-
CertainPerformance.. 不知道,甚至不知道从哪里开始.. 在正则表达式方面和新手一样好。如果我的问题很清楚,请写下答案。它也可以帮助其他人。
标签: regex negative-lookbehind positive-lookahead