0

我正在尝试以格式验证电话号码;xxx-nnn-yyyy 发出以下消息,我无法弄清楚为什么它不起作用。ii 似乎 \b 是错误的。感谢您对描述类似问题的任何帮助/建议/更正/方向,因为到目前为止我找不到任何问题。

    /AndroidRuntime(3143): Caused by: java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 6:
    /AndroidRuntime(3143): ^\\(?([0-9]{3})\\)?[-]?([0-9]{3})[-]?([0-9]{4})
    /AndroidRuntime(3143):       ^
    /AndroidRuntime(3143):  at java.util.regex.Pattern.compileImpl(Native Method)

    temp = phone.getText().toString();
    if (temp.length() == 0)  {
    Toast.makeText(getApplicationContext(), "Phone number is missing", Toast.LENGTH_SHORT).show();
    }else {
    Log.i(TAG, "Matching Phone Short");
    Pattern p = Pattern.compile("^\\\\(?\b([0-9]{3})\\\\)?[-]?([0-9]{3})[-]?([0-9]{4})\b"); 
    Matcher m = p.matcher(temp) ;
    if (m.find()){
    Log.i("RC OK", "ret code GOOD");    
    }else{
    Log.i("RC NOK", "ret code BAD");    
   }   
4

1 回答 1

2

你的正则表达式是错误的:

Pattern p = Pattern.compile("^\\\\(?\b([0-9]{3})\\\\)?[-]?([0-9]{3})[-]?([0-9]{4})\b"); 

由于 之后没有有效的标识符(?,也\b应该是\\b

尝试这个:

Pattern p = Pattern.compile("^\\\\(?:\\b([0-9]{3})\\\\)?[-]?([0-9]{3})[-]?([0-9]{4})\\b"); 
于 2013-11-13T17:30:52.577 回答