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

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

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

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

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

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


当前回答

根据我的情况,我很难找到最流行的答案。例如,我的验证失败,出现以下字符:;或[。我对白色列出我的特殊字符不感兴趣,因此我使用[^\w\s]作为测试-简单地放-匹配非单词字符(包括数字)和非空格字符。总而言之,这是对我有用的。。。

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


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

JSFiddle链接-涵盖各种情况的简单演示

其他回答

我在前面的一个答案中找到了一个解决方案:

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

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

…不适用于我,但以下是一个简化版,效果很好(添加任何您喜欢的特殊字符,我在这里添加了#),并添加数字规则,就像您对字母的处理一样:

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

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

"^(?=.*[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}$"

根据您的需要,这种模式应该可以正常工作。试试这个,

^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}

只需创建一个字符串变量,分配模式,并创建一个布尔方法,如果模式正确,则返回true,否则返回false。

示例:

String pattern = "^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}";
String password_string = "Type the password here"

private boolean isValidPassword(String password_string) {
    return password_string.matches(Constants.passwordPattern);
}
(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+-]).{6}

试试这个:

最少六个字符至少一个大写字符至少一个小写字符至少一个特殊字符

表达式:

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

可选特殊字符:

至少一个特殊字符至少有一个号码特殊字符是可选的最少6个字符,最多16个字符

表达式:

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

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

6是最小字符限制20是最大字符限制?= 均值匹配表达式