我有以下正则表达式:
String PASSWORD_PATTERN = "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{6,12})";
然后我像这样检查声明:
Pattern pattern = Pattern.compile(PASSWORD_PATTERN);
Matcher matcher = pattern.matcher(password);
if(!matcher.matches()) {
// error
}
如何调整此模式以包括检查任何空格和特殊字符?如果密码包含任何空格或任何特殊字符,则 match() 方法应该失败。
最佳答案
如果你只想拒绝空格,你可以使用:
(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])\\S{6,12}
\\S
将只匹配非空格。
另外,您可能不需要外括号。
编辑:没有看到其他部分。
如果要拒绝特殊字符,可以将 \\S
更改为否定类。使用这个虽然意味着你必须使用: [^\\s ... ]
例如,假设不应该有任何 ?
或空格。这变成:
(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[^\\s?]{6,12}
如果你也不想要 !
:
(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[^\\s?!]{6,12}
关于java - 正则表达式检查包含空格和特殊字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20664680/