当我使用以下代码段时,我遇到一个问题
String regexString=regexPair.get(paramName);
Pattern p = Pattern.compile(regexString);
Matcher m = p.matcher(paramMap.get(paramName)[0]);
status = m.matches();
它返回false
其中regexPair是hashmap而regexPair.get(paramName)是
"^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"
虽然我会替换
String regexString="^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"
然后它工作正常
paramMap.get(paramName)[0]
返回agsd@gmail.com。
我不知道为什么会这样,请帮助我。
答案 0 :(得分:1)
你怎么知道regexPair.get(paramName)
是你给的字符串?这是一些println
电话的结果吗?
我怀疑引用并不完全相同。可能regexPair.get(paramName)
实际上包含'\\'
后跟另一个'\\'
(即连续两个真正的反斜杠),而替换只包含"\\"
(这是一个反斜杠)。请注意,字符串"(\\."
实际上只有3个字符。