1

無効なエスケープ シーケンス (有効なものは \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 アプリケーションでは動作していませんでした。助けてください...

4

1 に答える 1

9

バックスラッシュをエスケープする必要があります-

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

これは、Javaがその\文字をエスケープ文字として使用しているためです。\エスケープ文字ではなく、本当に意味があることを伝えるには、を記述する必要があります\\

于 2013-01-23T06:45:52.610 に答える