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

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

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

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

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

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


当前回答

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

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

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

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

其他回答

@ClasG已经建议:

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

但它不接受_(下划线)作为特殊字符(例如Aa12345_)。

一个改进的方法是:

^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*([^\w\s]|[_]))\S{8,}$

使用此正则表达式,满足所有条件:

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

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

至少一个大写字母(?=.*?[A-Z])至少一个小写字母(?=.*?[a-z])至少一个数字,(?=.*?[0-9])至少一个特殊字符,即前3个条件中不包含的任何字符,(?=.*?[^A-Za-z0-9])长度至少为8。{8,}

保持简单和直接:

这对你来说总是有好处的。

正则表达式:^(.{0,7}|[^a-z]{1,}|[^a-z]{0,}|[^\d]{2,})$|[\s]

如果您的密码与上面的正则表达式匹配,则该密码无效。

如果没有匹配项,则您的密码有效,并且包含至少8个字符、一个大写字母、一个小写字母和一个符号或特殊字符。它也不包含空格、制表符或换行符。

Regex细分

.{0,7}-如果密码包含0到7个字符,则匹配。[^a-z]{1,}-匹配,如果找不到小写[^A-Z]{1,}-如果找不到大写字母,则匹配[^\d]{1,}-如果找不到数字(介于[0-9]之间),则匹配[\s]-如果找到空格、制表符或换行符,则匹配。

使用这种方法,在允许的符号方面没有限制或限制。如果要限制为允许的符号数,只需将[^\W]更改为[^YourSymbols]即可。

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

联机链接检查https://regex101.com/r/mqGurh/1