我需要一个正则表达式来检查:
密码至少包含八个字符,包括至少一个数字,包括小写和大写字母以及特殊字符,例如#、?、!。
它不能是您的旧密码,也不能包含您的用户名、“密码”或“网站名称”
这是我的验证表达式,用于八个字符,包括一个大写字母、一个小写字母和一个数字或特殊字符。
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
如果密码必须是八个字符,包括一个大写字母、一个特殊字符和字母数字字符,我怎么写?
我会回复彼得·莫滕森,但我没有足够的声誉。
他的表达完全符合每一项规定的最低要求。他的表达式不需要特殊字符的问题是,它们也不允许特殊字符,所以它们也强制执行最大要求,我不相信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,}以允许特定的特殊字符。
根据您的需要,这种模式应该可以正常工作。试试这个,
^(?=(.*\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);
}
没有直接回答这个问题,但它真的必须是正则表达式吗?
我曾经做过很多Perl,并习惯于用正则表达式解决问题。然而,当它们变得更加复杂时,你需要编写几十个单元测试来消除所有这些小bug。
此外,正则表达式通常比命令式或函数式解决方案慢几倍。
例如,以下(不是非常FP)Scala函数解决原始问题的速度大约是最流行答案的正则表达式的三倍。它的作用也很清楚,您根本不需要单元测试:
def validatePassword(password: String): Boolean = {
if (password.length < 8)
return false
var lower = false
var upper = false
var numbers = false
var special = false
password.foreach { c =>
if (c.isDigit) numbers = true
else if (c.isLower) lower = true
else if (c.isUpper) upper = true
else special = true
}
lower && upper && numbers && special
}
一个更“通用”的版本(?),不允许任何英文字母作为特殊字符。
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$
变量pwdList=['@@V4-\3Z'zTzM{>k',‘12qw!“QW12',123qweASD!"#',“1qA!"#$%&',“Günther32”,'123456789',‘qweASD123’,'qweqQWEQWEqw',“12qwAS!”],re=/^(?=\S*[a-z])(?=[S*[a-z])((?=`S*\d)(?=\S*[^\w\S])\S{8,}$/;pwdList.forEach(函数(pw){document.write('<span style=“color:'+(re.test(pw)?'green':'red')+'”>'+pw+'</span><br/>');});