有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java电话号码格式正则表达式

我想为以下数字格式创建一个正则表达式: +XXXXXXXXX+1(XXX)xxxxxx、+x(XXX)-XXX xxxx、XXX XXX xxxx、XXX xxxx和电话号码:、电话:、电话号码:以及上述所有格式。所有输出均为XXXXXXXXX

下面是我的代码片段

  public static String getPhoneNumber() // returns the phone number formatted as a sequence of digits
    {

        String regex = "^\\(?([0-9]{3})\\)?[-.\\s]?([0-9]{3})[-.\\s]?([0-9]{4})(?:Tel:)$";
        Pattern pattern = Pattern.compile(regex);
        for (int i = 0; i < line.length(); i++) 
        {
              //if phone number format includes -, . , spaces, + sign in front
              if (line.matches("[+]?\\d?[- .]?(\\([0-9]\\d{2}\\)|[0-9]\\d{2})[- .]?\\d{3}[- .]?\\d{4}$")) {
                phoneNumber = line.replaceAll("[^\\d.]", "").replace("-", "").replace(".", "").replace(" ", "").replace("(", "").replace(")", "")
                        .replace("+", "");

              }
              else
              {
                  getEmailAddress();
              }
                  }
        //System.out.println(phoneNumber);
        return phoneNumber;
    }

共 (3) 个答案

  1. # 1 楼答案

    似乎您想删除所有非数字,所以只需这样做。要选择行,请匹配(至少)有10位数字的行:

    if (line.matches("(\\D*\\d){10}.*"))) {
        phoneNumber = line.replaceAll("\\D", "");
    }
    

    这就是你所需要的

  2. # 2 楼答案

    字符串模式=“\d{10}}|(?:\d{3}-{2}\d{4}|\(\d{3}\)\d{3}-?\d{4}”

  3. # 3 楼答案

    尝试regex^(?:(?:Tel|Phone Number|Phone): )?(\+?\(?\d{3}\)?[-. ]\d{3}[-. ]\d{4})$

    这将使电话号码与关键字PhoneTelPhone Number匹配,而不会与其他关键字匹配

    捕获组$1以获取电话号码

    Regex