【发布时间】:2011-12-28 00:14:05
【问题描述】:
请给我正则表达式中的代码,用于在 java 中验证密码,该代码应由一个大写字符、一个整数、一个以下符号(@、#、$、%、^、&、+、=)和小字符组成。
我一直在尝试使用不同的单独正则表达式和一个组合正则表达式。
实际上,我已经拥有一个评估 javascript 中所有条件的正则表达式。
我无法在 Java 后端使用它。我尝试转义\。它也不起作用。
这是我的代码:
Pattern pattern = Pattern.compile("/.*(?=.{6,})(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/");
Matcher matcher = pattern.matcher("Aa@1");
if(matcher.matches()){
System.out.println("Matched");
}
else{
System.out.println("No mat");
}
原来的javascript正则表达式是
/.*(?=.{6,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/
由于转义字符,\d 给了我错误。所以,我在 Java 版本之前添加了另一个 \。
我无法理解出了什么问题。
提前致谢。
【问题讨论】:
-
你应该举例说明你尝试过的事情。
-
@anubhava,如果支持,可以通过前瞻轻松完成。即使没有环视,您也可以排列可能的顺序,尽管在这种情况下不切实际,但这是可能的。
-
@Qtax:是的,通过所有订单的排列(并且会有很多),这是可能的,但不确定如何通过避免这些使用前瞻来轻松完成排列。
-
您要禁止列出的 7 个以外的特殊字符吗? (请不要)否则为什么不直接说“必须有一个非字母、非数字”字符。
-
@anubhava - 你最好去阅读Mastering Regular Expressions (3rd Edition)。正则表达式可以(快速且可靠地)完成很多的事情,而这里的许多人自称是不可能的。你看,正则表达式引擎早已超越了 REGULAR(理论上的)正则表达式!任何具有前瞻功能的现代正则表达式引擎都可以轻松解决这里提出的问题。请参阅蒂姆的回答。
标签: java regex regexkitlite