我需要一个正则表达式来检查:

密码至少包含八个字符,包括至少一个数字,包括小写和大写字母以及特殊字符,例如#、?、!。

它不能是您的旧密码,也不能包含您的用户名、“密码”或“网站名称”

这是我的验证表达式,用于八个字符,包括一个大写字母、一个小写字母和一个数字或特殊字符。

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

如果密码必须是八个字符,包括一个大写字母、一个特殊字符和字母数字字符,我怎么写?


当前回答

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+-]).{6}

其他回答

 

✅ 以下4个正则表达式模式可以帮助您编写几乎所有的密码验证

 

 

模式1:

 

密码必须包含1到9之间的一个数字、一个小写字母、一个大写字母、一种特殊字符、无空格,并且长度必须为8-16个字符。

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)(?!.* ).{8,16}$/

 

说明:

 

(?=.*[0-9])表示密码必须包含一个从1到9的数字。

 

(?=.*[a-z])表示密码必须包含一个小写字母。

 

(?=.*[A-Z])表示密码必须包含一个大写字母。

 

(?=.*\W)表示密码必须包含一个特殊字符。

 

.{8,16}表示密码长度必须为8-16个字符。我们必须在正则表达式的末尾,就在$符号之前使用它。

 

什么是^和$:

 

^表示字符串的开头。$表示字符串的结尾。

如果不使用这些^&$,正则表达式将无法确定密码的最大长度。在上面的示例中,我们有一个条件,即密码不能超过16个字符,为了使该条件有效,我们使用了这些^&$

 

删除最大长度限制:

 

而不是{8,16},如果我们使用。{8,},这意味着密码长度必须至少为8个字符。因此,不存在检查密码最大长度的任何条件。

 

不接受任何数字(数字):

 

如果使用(?!.*[0-9])而不是(?=.*[0-10]),则意味着密码不能包含1-9之间的任何数字(与(?=.*[0-0])的区别是使用!而不是=)

 

不接受任何特殊字符:

 

如果我们使用(?!.*\W)而不是(?=.*\W),则意味着密码不能包含任何特殊字符(与(?=.*\W的区别在于使用!而不是=)

 

数字(数字)的替代语法:

 

我们可以使用(?=.*\d)代替(?=.*\d)。(?=..*\d)也意味着密码必须包含1到9之间的一个数字。

 

 

模式2:

 

密码必须包含1到9之间的一个数字、一个小写字母、一个大写字母、一条下划线,但不能包含其他特殊字符、空格,并且长度必须为8-16个字符。

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*_)(?!.*\W)(?!.* ).{8,16}$/

 

与模式1的区别

 

这里,我们使用了模式1中没有的(?=.*_)。

 

(?=.*_)(?!.*\W)表示密码必须包含下划线,但不能包含任何其他特殊字符。

 

模式3:

 

密码必须包含1到9之间的一个数字、一个小写字母、一个大写字母、一条下划线、无空格,并且长度必须为8-16个字符。除下划线外,任何其他特殊字符的使用都是可选的。

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*_)(?!.* ).{8,16}$/

 

与模式2的区别

 

这里,我们没有使用(?!.*\W)模式2上的内容。

 

但它仍然具有(?=.*_)

 

通过删除(?!.*\W),特殊字符已成为可选字符。现在,需要一个下划线,但可以使用或不使用任何其他特殊字符,因为它是可选的。

 

模式4:

 

密码必须包含1到9之间的一个数字、一个小写字母、一个大写字母和一个下划线,并且长度必须为8-16个字符。任何其他特殊字符的使用和空格的使用都是可选的。

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}$/

 

与模式3的区别

 

这里,我们没有使用模式3中的(?=.*_)&(?!.*)。

 

通过删除(?=.*_),不再强制传递一个下划线。现在,传递特殊字符是可选的。

 

通过删除(?!.*),空间的使用也变得可选。

至少八个字符,至少一个字母和一个数字:

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

至少八个字符,至少一个字母、一个数字和一个特殊字符:

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

至少八个字符,至少一个大写字母、一个小写字母和一个数字:

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

至少八个字符,至少一个大写字母、一个小写字母、一位数字和一个特殊字符:

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

最少八个字符,最多十个字符,至少一个大写字母,一个小写字母,一位数字和一个特殊字符:

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

我在这里发现了很多问题,所以我自己做了。

这里是它的荣耀,有测试:

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

https://regex101.com/r/DCRR65/4/tests

需要注意的事项:

不使用\w,因为其中包含我正在测试的_。我在匹配符号时遇到了很多麻烦,但没有匹配行的结尾。没有具体指定符号,这也是因为不同地区的键盘上可能有不同的符号。

对@anubhava的回答只是一个小小的改进:由于特殊字符仅限于键盘中的字符,因此对任何特殊字符都使用此选项:

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

此正则表达式将强制执行以下规则:

至少一个大写英文字母至少一个小写英文字母至少一个数字至少一个特殊字符长度至少为8

我会回复彼得·莫滕森,但我没有足够的声誉。

他的表达完全符合每一项规定的最低要求。他的表达式不需要特殊字符的问题是,它们也不允许特殊字符,所以它们也强制执行最大要求,我不相信OP要求的。通常情况下,您希望允许您的用户将密码设置为他们想要的强度;为什么要限制强密码?

因此,他的“最少八个字符,至少一个字母和一个数字”表达:

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

达到了最低要求,但剩余的字符只能是字母和数字。要允许(但不要求)特殊字符,您应该使用以下内容:

^(?=.*[A-Za-z])(?=.*\d).{8,}$以允许任何字符

or

^(?=.*[A-Za-z])(?=..*\d)[A-Za-z \d$@$!%*#?&]{8,}$允许特定的特殊字符

同样,“最少八个字符,至少一个大写字母,一个小写字母和一个数字:”

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

满足最低要求,但只允许字母和数字。使用:

^(?=.*[a-z])(?=.*[a-z])(“?=.*\d).{8,}$允许任何字符

or

^(?=.*[a-z])(?=..*[a-z])((?=.*\d)[a-Za-z\d$@$!%*?&]{8,}以允许特定的特殊字符。