我正在尝试使用正则表达式,正则表达式测试电话号码格式,当我运行Pattern.compile时,我收到错误 java.util.regex.PatternSyntaxException:索引34附近的未关闭组
public String checkPhoneNum(String inPhoneNum)
{
Pattern checkRegex = Pattern.compile("(\\([0-9]{3}\\)([0-9]{3}(-)[0-9]{4})");
Matcher regexMatcher = checkRegex.matcher(inPhoneNum);
if(regexMatcher.find())
{
return inPhoneNum;
}
else
return null;
}
是格式(000)111-2222没有正确编写的字符串(\\([0-9]{3}\\)([0-9]{3}(-)[0-9]{4})
?
答案 0 :(得分:6)
您在第一个匹配组中缺少一个右括号:
应该是
Pattern checkRegex = Pattern.compile("(\\([0-9]{3}\\))([0-9]{3}(-)[0-9]{4})");
原样:
( - start of mathing group
\\( - matches (
[0-9]{3} - 3 digits
\\) - matches )
) - end of matching group (this is the one you missed)