0%

密码相关正则

需求

密码相关正则

The same list as string (between double quotes): “!”#$%&’()*+,-./:;<=>?@[]^_`{|}~”

有意思的

正则

第一种

至少 8-16 个字符,至少 1 个大写字母,1 个小写字母和 1 个数字,其他可以是任意字符:

1
2
3
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[\s\S]{8,16}$/ 

其中 [\s\S] 中的\s 空白符,\S 非空白符,所以[\s\S]是任意字符。也可以用 [\d\D][\w\W]来表示。

至少 8 个字符,至少 1 个大写字母,1 个小写字母和 1 个数字,不能包含特殊字符(非数字字母):

1
^(?=._[A-Za-z])(?=._\d)[A-Za-z\d]{8,}$

至少 8 个字符,至少 1 个字母,1 个数字和 1 个特殊字符:

1
^(?=._[A-Za-z])(?=._\d)(?=._[$@$!%_#?&])[A-Za-z\d$@$!%*#?&]{8,}$

至少 8 个字符,至少 1 个大写字母,1 个小写字母和 1 个数字:

1
^(?=._[a-z])(?=._[A-Z])(?=.\*\d)[a-zA-Z\d]{8,}$

至少 8 个字符,至少 1 个大写字母,1 个小写字母,1 个数字和 1 个特殊字符:

1
^(?=._[a-z])(?=._[A-Z])(?=._\d)(?=._[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}

最少 8 个最多十个字符,至少 1 个大写字母,1 个小写字母,1 个数字和 1 个特殊字符:

1
^(?=._[a-z])(?=._[A-Z])(?=._\d)(?=._[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,10}

第二种

1
^(?=._?[A-Z])(?=._?[a-z])(?=._?[0-9])(?=._?[#?!@$%^&*-]).{8,}$
  • 至少 1 个大写字母 English letter,(?=.\*?[A-Z])
  • 至少 1 个小写英文字母,(?=.\_?[a-z])
  • 至少 1 位数字,(?=.\_?[0-9])
  • 至少有 1 个特殊字符,(?=._?[#?!@$%^&_-])
  • 最小 8 个长度 {8,}

第三种

正则表达式没有 AND 运算符,所以编写正则表达式与有效密码匹配是非常困难的,当有效性被某些东西和其他东西等定义时…
但是,正则表达式确实有 1 个 OR 运算符,所以只需应用 DeMorgan 的定理,并编写 1 个与无效密码相匹配的正则表达式:
任何少于 8 个字符或任何没有数字或任何没有大写字母或任何没有小写字母或任何没有特殊字符的任何东西。

所以:^(.{0,7}|[^0-9]_|[^a-z]_|[^a-z]_|[a-zA-Z0-9]_)$,如果有什么匹配的话,这是 1 个无效的密码。

第四种

由于特殊字符仅限于键盘中的特殊字符,因此可用于任何特殊字符:

1
^(?=._?[A-Z])(?=(._[a-z]){1,})(?=(._[\d]){1,})(?=(._[\W]){1,})(?!.\*\s).{8,}$

这个正则表达式将强制执行这些规则:

  • 至少 1 个大写英文字母
  • 至少 1 个小写英文字母
  • 至少 1 位数字
  • 至少 1 个特殊字符
  • 最少 8 个长度

第五种

根据我的情况,我遇到了最受欢迎的答案。例如,我的验证失败,其中包含;或[等字符。我对 white-listing 我的特殊字符不感兴趣,所以我用[^\w\s]作为测试 – 简单地把非字符(包括数字)和非空格字符放在一起。总而言之,这是对我有用的

  • 至少 8 字符
  • 至少 1 数字字符
  • 至少 1 小写字母
  • 至少 1 大写字母
  • 至少 1 特殊字符
1
/^(?=._?[A-Z])(?=._?[a-z])(?=._?[0-9])(?=._?[^\w\s]).{8,}$/ 简单演示涵盖各种情况

第六种

导入 JavaScript 文件 jquery.validate.min.js

您可以使用此方法:

JavaScript 代码:

1
2
3
4
5
6
7
8
$.validator.addMethod('pwcheck', function (value) {
return (
/[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(value) &&
/[a-z]/.test(value) &&
/[0-9]/.test(value) &&
/[A-Z]/.test(value)
);
});
  • 至少 1 个大写英文字母
  • 至少 1 个小写英文字母
  • 至少 1 位数字
  • 至少 1 个特殊字符

第七种

尝试这个:

  • 最少 6 个字符
  • 至少有 1 个大写字符
  • 至少 1 个小写字符
  • 至少 1 个特殊字符

表达式:

1
/^(?=._[a-z])(?=._[A-Z])(?=._\d)(?=._[$@$!%*?&.])[A-Za-z\d$@$!%*?&.]{6, 20}/

可选特殊字符:

  • 至少 1 个特殊字符
  • 至少 1 个数字
  • 特殊字符是可选的
  • 最少 6 个字符,最多 16 个字符

表达式:

1
/^(?=._\d)(?=._[a-zA-Z]).{6,20}$/

如果不需要最小和最大条件,则删除.{6, 16}

  • 6 是最小字符数限制
  • 20 是最大字符限制
  • ?=表示匹配表达式

参考文章