我正在编写密码屏幕,密码安全性的要求长度介于8到20个字符之间,必须至少包含 一个Alpha字符且至少一个数字字符和至少 [!@#$%^&*]
的一个特殊字符。
我拼凑了这个正则表达式,它似乎在C#中工作,但是当我开始重写JavaScript验证的代码时,正则表达式将我认为有效密码标记为无效。
这是正则表达式,因为我将它分配给RegExp:
var regExPatt = new RegExp('^(?=(?:.*[a-zA-Z]){1})(?=(?:.*\d){1})(?=(?:.*[!@@#$%^&*]){1})(?!.*\s).{8,20}$');
注意BENE:双@@
符号用于将@
符号放入RegExp,否则它会尝试处理部分字符串,如Razor变量和东西横向移动快。
这个正则表达式在哪里出错了?我知道这很复杂。
有效的密码:
freddy1234%
freddy123$5
freddy12#45
freddy1@345
freddy!2345
不起作用的密码:
test1234%
wilma1234%
有什么想法吗?
答案 0 :(得分:0)
JavaScript开发人员应该了解
想要使用正面或负面预测的开发人员应该考虑到这需要JavaScript v1.5,因为它可以在页面New in JavaScript 1.5上阅读。但是现在这应该没问题,因为这是2000年11月发布的一个非常旧的版本,现在使用的所有浏览器都支持JavaScript的v1.5。
JavaScript支持Lookbehind(JavaScript v1.8.5)。
JavaScript版本列表以及哪些浏览器支持哪些JavaScript版本可以在Wikipedia页面上找到JavaScript。
New in JavaScript包含指向页面的链接,说明在哪个版本的JavaScript中添加了什么。