在Javascript中进行密码验证的正则表达式

siv*_*anv 6 javascript regex passwords jquery

正则表达式密码复杂性要求any three在创建或更改密码时必须应用以下四个特征.

  • 字母字符 - 至少1个大写字母字符
  • 字母字符 - 至少1个小写字母字符
  • 数字字符 - 至少1个数字字符
  • 特殊字符 - 至少1个特殊字符

我正在尝试使用以下代码,但它不适用于 special characters

(?=^.{6,}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*
Run Code Online (Sandbox Code Playgroud)

我希望我的正则表达式能够针对以下4个案例进行验证

匹配案例

  • 2P @提供ssword
  • 密码1
  • 2P @ ssword1
  • 2P @ 12345

Aru*_*hny 6

我认为在这种情况下单个正则表达式会很混乱.你可以轻松做点什么

var count = 0;

count += /[a-z]/.test(password) ? 1 : 0;
count += /[A-Z]/.test(password) ? 1 : 0;
count += /\d/.test(password) ? 1 : 0;
count += /[@]/.test(password) ? 1 : 0;

if(count > 2) {
    alert('valid')
}
Run Code Online (Sandbox Code Playgroud)

  • @sivanv您还必须学习,即使一开始的问题看起来像钉子,解决方案也不总是锤子 (2认同)

Jer*_*rry 5

我认为您可以使用的正则表达式是:

(?=^.{6,}$)(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9]).*
Run Code Online (Sandbox Code Playgroud)

我不确定为什么您的正则表达式中有那么多或运算符,但是如果满足以下条件,则此匹配项:

  • (?=^.{6,}$) -字符串> 5个字符
  • (?=.*[0-9]) -包含一个数字
  • (?=.*[A-Z]) -包含一个大写字母
  • (?=.*[a-z]) -包含小写字母
  • (?=.*[^A-Za-z0-9]) -字符不是字母数字。

正则表达式图像