密码的正则表达式 - 排除某些字符

时间:2013-10-22 10:08:45

标签: regex validation passwords blacklist

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

我已经开发了这个:

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

但是最近,要求发生了变化,我需要实现黑名单,例如:   - 密码不得包含字母“o”或“O”; //奥斯卡的小写和大写字母O.   - 密码不得为0; //数字零

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

JB

1 个答案:

答案 0 :(得分:0)

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

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

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