0

嗨,我想形成像这样的字符组合

字母、数字的组合(2) 特殊字符(1) 最少 6 个字符

我尝试使用

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

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

4

1 回答 1

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
} 
于 2012-04-18T07:02:29.463 回答