使用正则表达式在索引附近的未闭合组

时间:2014-04-06 23:49:35

标签: java regex

我正在尝试使用正则表达式,正则表达式测试电话号码格式,当我运行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})

1 个答案:

答案 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)