2

我需要开发具有以下标准的密码验证: - 至少一个大写字母;- 至少一个小写字母;- 至少在数字上;- 可能包含一些特殊字符;- 长度必须在 8 到 12 之间;

我开发了这个:

(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!#$&%*_+-=?|]).{8,12}

但是最近需求变了,我需要实现一个字符黑名单,例如: - 密码不能有字母“o”或“O”;// Oscar 的小写和大写 O - 密码不能有数字 0;// 数字零

如何保持初始要求并添加这些新验证?谢谢

JB

4

1 回答 1

2

问题是连字符出现在字符类的中间。连字符只有在字符类中的第一个或最后一个时才能保持未转义,因此以下正则表达式应该可以工作:

(?!.*[oO0])(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!#$&%*+=?|-]).{8,12}

现场演示:http ://www.rubular.com/r/AI928rE8Aj

于 2013-10-22T10:17:37.150 回答