我的密码强度标准如下:
谁能给我一个相同的正则表达式。密码必须满足所有条件。
发布于 2011-02-28 20:46:43
您可以使用肯定的先行断言来执行这些检查:
^(?=.*[A-Z].*[A-Z])(?=.*[!@#$&*])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8}$
解释:
^ Start anchor
(?=.*[A-Z].*[A-Z]) Ensure string has two uppercase letters.
(?=.*[!@#$&*]) Ensure string has one special case letter.
(?=.*[0-9].*[0-9]) Ensure string has two digits.
(?=.*[a-z].*[a-z].*[a-z]) Ensure string has three lowercase letters.
.{8} Ensure string is of length 8.
$ End anchor.
发布于 2019-12-13 15:06:05
您还应考虑将某些规则更改为:
通过上述改进,为了获得更大的灵活性和可读性,我将regex修改为。
^(?=(.*[a-z]){3,})(?=(.*[A-Z]){2,})(?=(.*[0-9]){2,})(?=(.*[!@#$%^&*()\-__+.]){1,}).{8,}$
基本解释
(?=(.*RULE){MIN_OCCURANCES,})
每个规则块由(?=(){})显示。然后,在组合之前,可以轻松地分别指定和测试规则和出现次数
详细说明
^ start anchor
(?=(.*[a-z]){3,}) lowercase letters. {3,} indicates that you want 3 of this group
(?=(.*[A-Z]){2,}) uppercase letters. {2,} indicates that you want 2 of this group
(?=(.*[0-9]){2,}) numbers. {2,} indicates that you want 2 of this group
(?=(.*[!@#$%^&*()\-__+.]){1,}) all the special characters in the [] fields. The ones used by regex are escaped by using the \ or the character itself. {1,} is redundant, but good practice, in case you change that to more than 1 in the future. Also keeps all the groups consistent
{8,} indicates that you want 8 or more
$ end anchor
最后,出于测试目的,这里是一个带有上述正则表达式的robulink
发布于 2011-02-28 20:48:52
您可以使用长度为零的正向look-ahead分别指定每个约束:
(?=.{8,})(?=.*\p{Lu}.*\p{Lu})(?=.*[!@#$&*])(?=.*[0-9])(?=.*\p{Ll}.*\p{Ll})
如果您的正则表达式引擎不支持\p
表示法,并且纯ASCII码就足够了,那么可以将\p{Lu}
替换为[A-Z]
,将\p{Ll}
替换为[a-z]
。
https://stackoverflow.com/questions/5142103
复制相似问题