我关注BalusC's DAO Tutorial,其中有这个功能:
private static String hashMD5IfNecessary(String password) {
return !"^[a-f0-9]{32}$".matches(password) ? hashMD5(password) : password;
}
我加上:
<h:inputText value="#{myBean.password}" />
但是"^[a-f0-9]{32}$".matches(password)
(从MySQL表中检索到password
)总是返回false
,即使它传递了MD5哈希密码,例如21232f297a57a5a743894a0e4a801fc3
。
我也尝试过以下模式:
[a-f0-9]{32}
[a-f0-9]{32}+
但他们仍然总是评估为false
。此外,我非常怀疑BalusC的原始代码是错误的。我做错了什么?
谢谢!
答案 0 :(得分:6)
请参阅http://download.oracle.com/javase/6/docs/api/java/lang/String.html#matches(java.lang.String)
matches()方法将一个正则表达式作为参数,所以考虑到你在问题中写的内容,它总是返回false,因为密码不太可能是匹配的正则表达式“^ [A-f0-9] {32} $”。
尝试
password.matches("^[a-f0-9]{32}$")
代替