2012-04-18 72 views
0

您好我想以形成像Regex的字符组合

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

我尝试使用

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

但我无法做出如上所述的组合。怎么做。?

+0

你想创建组合或搭配组合? – 2012-04-18 06:59:39

+1

一些示例输入和预期匹配将会很有用。 – alan 2012-04-18 07:01:31

回答

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 
} 
+0

这是Java正则表达式 – user1321824 2012-04-18 07:08:03