javascript - 给定规则组合的正则表达式

标签 javascript ruby-on-rails ruby regex jquery-validate

我正在尝试编写正则表达式来验证给定规则的密码。

密码长度必须至少为 8 个字符,并且至少包含以下 4 种字符中的 3 种:

  • 小写字母(即 a-z)
  • 大写字母(即 A-Z)
  • 数字(即 0-9)
  • 特殊字符(例如!@#$&*)

我正在经历this讨论发现this那里的答案非常好。

现在我正在尝试为上述要求编写正则表达式,我想出了这样的解决方案

^(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).{8,}|
(?=.*[!@#$&*])(?=.*[0-9])(?=.*[a-z]).{8,}|
(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,}|
(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[a-z]).{8,}|
(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9]).{8,}$

并且它运行完美,请参阅 rubular但我想优化这些正则表达式,我不确定是否有任何方法可以简化它。 任何建议将不胜感激。 非常感谢

最佳答案

帮自己(以及将来开发该应用程序的任何人)一个忙,将正则表达式分成 4 部分:

{
  :lowercase => /regex_for_lowercase/,
  :uppercase => /regex_for_uppercase/,
  :digits => /regex_for_digits/,
  :symbols => /regex_for_symbols/,
}

然后统计密码符合这4条规则中有多少条。如果输入的密码未通过验证,它还可以让您有机会显示更有用的错误消息。

关于javascript - 给定规则组合的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38697815/

相关文章:

ruby-on-rails - 在 Rails 中访问缓存时 "stale, valid, store"是什么意思?

ruby-on-rails - Ruby Gem 开发 - 如何使用 ActiveRecord?

ruby - 无法安装logtash contrib插件?

ruby - CSV 参数数量错误

javascript - useHistory - 无法读取未定义的属性 'push'

javascript - 如何复制事件幻灯片的文本颜色并将其应用于另一个 div

mysql - heroku rake 数据库 :migrate ERROR "gem install activerecord-mysql-adapter"

ruby-on-rails - 尝试使用 mongoid 作为 orm in rails 连接到 ec2 上的 mongodb 实例

javascript 代码在浏览器中不起作用?

javascript - 如何使用函数调用代替循环跳转?