嗨我想形成像
这样的角色组合字母组合, 标号(2) 特色(1) 最少6个字符
我尝试使用
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,})
但我无法按上述方式进行组合。如何做到这一点。?
答案 0 :(得分:1)
你的正则表达式基本上没问题。
您没有提供正在使用的正则表达式引擎类型,因此除非它是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
}