移动验证:java.util.regex.PatternSyntaxException:索引2附近的语法错误U_REGEX_RULE_SYNTAX:

时间:2012-08-16 09:12:10

标签: android regex

在此,我希望验证手机号码是以+91开头还是10 digit number之后。 我将+91 pincode添加到edittext中,如:

edtmobile.append("+91(-)");所以当显示编辑文本(UI)时,已经有+91并且在编辑了10位数后

我正在使用Reg Ex:

String regExPhone = "(+91(-)?|91(-)?|0(-)?)?[0-9]{10}";

但得到的错误如下:

E/AndroidRuntime( 1411): java.util.regex.PatternSyntaxException: Syntax error U_REGEX_RULE_SYNTAX near index 2:
E/AndroidRuntime( 1411): (+91(-)?|91(-)?|0(-)?)?[0-9]{10}
E/AndroidRuntime( 1411):   ^

请让我知道我在哪里犯了错误,还有其他解决办法。

感谢。

1 个答案:

答案 0 :(得分:0)

+是正则表达式中的特殊字符,需要转义

String regExPhone = "(\+91(-)?|91(-)?|0(-)?)?[0-9]{10}";

你也不需要将单个字符分组以使它们成为可选字符,所以

String regExPhone = "(\+91-?|91-?|0-?)?[0-9]{10}";

会是一样的。