JavaScript RegExp 密码验证

3

我有一些密码约束条件需要验证:

  • 最小长度为6
  • 允许使用大写和小写字母
  • 至少有一个字符(大写或小写)
  • 至少有一个数字
  • 允许使用特殊字符:_$#%&!?-.

目前我的正则表达式如下:

/^(?=.*\d+)(?=.*[a-zA-Z])[0-9a-zA-Z\_\$\#\%\&!\?\-\.]{6,}$/

除了特殊字符外,所有的需求都被满足了。有人能解释一下我在特殊字符方面做错了什么吗?正如你所看到的,每个字符都被转义并分组为“允许”的字符类别。然而,测试仍然失败了。

谢谢


你能给我们举一个失败的测试例子吗?正则表达式看起来没问题。 - Andrew Cheong
当然,使用以下passwd时,我的应用程序测试失败:asdfgH12&。 - DucatiNerd
4
正则表达式正确(但可以简化为/^(?=.*\d)(?=.*[a-z])[\w$#%&!?.-]{6,}$/i)。问题必须出现在别的地方。你是如何使用这个正则表达式的? - Tim Pietzcker
谢谢你的修改,Tim!我正在使用正则表达式来验证Sencha Touch 2.0模型(它使用以下实现:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp)。 - DucatiNerd
@所有人 - 我是个白痴。看了将近一个小时的正则表达式后,我错过了几行之前的另一个验证。那是一个最初用于过滤与XSS相关的用户输入的"safeString"验证!我很抱歉!谢谢你们的时间! - DucatiNerd
显示剩余2条评论
1个回答

2
/^(?=.{6})(?=.*[a-zA-Z])(?=.*\d)[\w$#%&!?.-]+$/

或者

/^(?=.{6})(?=.*[a-z])(?=.*\d)[\w$#%&!?.-]+$/i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接