【问题标题】:Invalid escape sequence for Regular Expression正则表达式的无效转义序列
【发布时间】:2013-01-23 06:44:10
【问题描述】:

无效的转义序列(有效的是 \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 应用程序。请帮忙...

【问题讨论】:

  • 在所有反斜杠都有自己的反斜杠之前,它无法在任何基于 Java 的应用程序上正常工作。

标签: java android regex


【解决方案1】:

您的反斜杠需要转义 --

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

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

【讨论】:

  • 对于加分,找出需要四个、八个和十六个反斜杠来正确编译正则表达式的情况;)
猜你喜欢
  • 2019-05-12
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多