1

当我使用以下代码片段时,我遇到了一个问题

 String regexString=regexPair.get(paramName);

 Pattern p = Pattern.compile(regexString);
 Matcher m = p.matcher(paramMap.get(paramName)[0]);
 status = m.matches();

它返回假

其中 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。

我不明白为什么会发生这种情况,请帮助我。

4

1 回答 1

1

你怎么知道那regexPair.get(paramName)是你给的字符串?这是某个println电话的结果吗?

我怀疑引用并不完全相同。可能regexPair.get(paramName)实际包含'\\'后跟另一个'\\'(即连续两个真正的反斜杠),而替换只包含"\\"(这是一个反斜杠)。请注意,该字符串"(\\."实际上只有 3 个字符长。

于 2012-07-09T16:42:00.097 回答