正则表达式的转义序列无效

时间:2013-01-23 06:44:11

标签: java android regex

无效的转义序列(有效转义序列为\ b \ t \ n \ f \ r \“\ \ \ \)

public static final boolean isValidPhoneNumber(CharSequence target) {

    if (target == null || TextUtils.isEmpty(target)) {
        Pattern numberPattern = Pattern.compile("^((\+){0,1}91(\s){0,1}(\-){0,1}(\s){0,1})?([0-9]{10})$");
        Matcher numberMatcher = numberPattern.matcher(target);
        return numberMatcher.matches();
    }

    return false;
}

我使用在线检查的正则表达式工作正常但不能在我的Android应用程序上工作。 Plz帮助...

1 个答案:

答案 0 :(得分:9)

您的反斜杠需要转义 -

Pattern numberPattern = Pattern.compile("^((\\+){0,1}91(\\s){0,1}(\\-){0,1}(\\s){0,1})?([0-9]{10})$");

这是因为Java使用\字符作为转义字符,告诉它你的意思是\而不是转义字符,你必须写\\