嗨,我想形成像这样的字符组合
字母、数字的组合(2) 特殊字符(1) 最少 6 个字符
我尝试使用
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,})
但我无法进行上述组合。如何做到这一点。?
你的正则表达式基本上没问题。
您没有提供您正在使用的正则表达式引擎的类型,因此除非它是 Java 或其他不支持逐字字符串的语言,否则您可能需要更改\\d
为\d
,或者正则表达式的那部分将尝试匹配文字反斜杠, 后跟一个d
.
此外,您应该将正则表达式锚定到字符串的开头以提高性能。在 Java 中,该.matches()
方法会隐式地为您执行此操作。
然后,目前您的正则表达式只需要一个数字,但需要两个 ASCII 字母(一个小写,一个大写)。这真的是你想要的吗?
我会这样解释您的要求:
if (subjectString.matches("(?=.*\\d.*\\d)(?=.*[A-Za-z])(?=.*[@#$%]).{6,}")) {
// Password matches the criteria
} else {
// Password doesn't match the criteria
}