正则表达式字符组合

时间:2012-04-18 06:56:31

标签: java regex

嗨我想形成像

这样的角色组合

字母组合,     标号(2)     特色(1)     最少6个字符

我尝试使用

((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,})

但我无法按上述方式进行组合。如何做到这一点。?

1 个答案:

答案 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
}