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;
}
# 1 楼答案
似乎您想删除所有非数字,所以只需这样做。要选择行,请匹配(至少)有10位数字的行:
这就是你所需要的
# 2 楼答案
字符串模式=“\d{10}}|(?:\d{3}-{2}\d{4}|\(\d{3}\)\d{3}-?\d{4}”
# 3 楼答案
尝试regex
^(?:(?:Tel|Phone Number|Phone): )?(\+?\(?\d{3}\)?[-. ]\d{3}[-. ]\d{4})$
这将使电话号码与关键字
Phone
、Tel
或Phone Number
匹配,而不会与其他关键字匹配捕获组
$1
以获取电话号码Regex