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

Java电话号码格式正则表达式,java,regex,match,Java,Regex,Match,我想为以下数字格式创建一个正则表达式: +XXXXXXXXX+1XXXXXXXX、+XXXXXXXXXXXX、XXXXXXXXXXXX、XXXXXXXX xxxx和电话号码:、电话:、电话:,以及上述所有格式。所有输出均为XXXXXXXXX 下面是我的代码片段 public static String getPhoneNumber() // returns the phone number formatted as a sequence of digits { St

我想为以下数字格式创建一个正则表达式: +XXXXXXXXX+1XXXXXXXX、+XXXXXXXXXXXX、XXXXXXXXXXXX、XXXXXXXX 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;
    }
试试regex ^?:?:电话^电话号码^电话:?\+?\?\d{3}\?[-.]\d{3}[-.]\d{4}$

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

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


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

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

是您所需要的全部。

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

.replaceAll[^\\d]应该删除所有非数字字符,因此不需要额外的替换方法注意:正则表达式中没有点。看起来您已经有了一个合理的开始。你有什么困难?问题是我无法识别上述不同格式的数字。除非在字符串之前有一个Tel:或类似的东西,我不知道如何让它接受它仍然是一个电话号码。它应该能够计算出我使用的是电话号码,而不是标记为传真的东西。你能显示一些示例字符串吗示例输入字符串包括:+111-111-1111、电话:111-111-1111、电话号码:111-111-1111等。。