我正在尝试以格式验证电话号码; 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");
}
答案 0 :(得分: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");