javascript - 至少匹配 m 组中的 n 组的正则表达式

标签 javascript regex passwords

我打算编写一个正则表达式,仅当字符串至少包含 n 个不同类别的字符时才匹配。我打算用它来强制我的用户创建强密码,并想检查密码是否至少包含以下 3 项:

  • 人物
  • 大写字符
  • 数字
  • 特殊字符

如果所有这些类都存在,编写一个匹配的正则表达式是微不足道的使用前瞻。但是,我无法理解“至少 3”部分。这甚至可能(在一个漂亮、紧凑的表达式中)还是我必须创建一个怪物表达式?

最佳答案

我认为这将比列出 4 个中的 3 个的每个可能组合更紧凑。它利用否定前瞻来确保整个字符串不只由您列出的一个或两个字符类组成:

(?!([a-zA-Z]*|[a-z\d]*|[^A-Z\d]*|[A-Z\d]*|[^a-z\d]*|[^a-zA-Z]*)$).*

按顺序,这里的组是:

  • 较低和/或较高
  • 小数位和/或小数位
  • 较低的和/或特殊的
  • 大写和/或数字
  • 高级和/或特殊
  • 数字和/或特殊

如果整个字符串(因为否定先行中的 $)仅包含上述任何组中的字符,则此正则表达式将失败。

关于javascript - 至少匹配 m 组中的 n 组的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6739676/

相关文章:

javascript - 正则表达式删除字母数字但保留 Javascript 中的括号和空格

javascript - 忽略正则表达式中的字符

php - 如何保护数据库服务器?

php - laravel 密码盐存储在哪里?

javascript - servlet 过滤器中的静态资源版本控制(添加额外的 GET 参数)

javascript - 如何判断滚轮事件是否发生在带有滚动条的元素上?

javascript - 使用 gulp.src() 列出数组中的所有文件

regex - 路径的ElasticSearch正则表达式查询

javascript - (Javascript)我可以为单个输入框设置 "autocomplete=off"吗?

javascript - AngularJS Karma 测试中的 jQuery 触发事件