【发布时间】:2019-05-23 08:36:44
【问题描述】:
我想为以下数字格式创建一个正则表达式: +XXXXXXXXXX。 +1(XXX)xxxxxx, +x(xxx)-xxx-xxxx, xxx-xxx-xxxx, xxx-xxxx 和电话号码:,电话:,电话: 以上所有格式。都是xxxxxxxxx的输出
下面是我的代码的 sn-p。
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;
}
【问题讨论】:
-
.replaceAll("[^\\d]", "")应该删除 所有 个非数字字符,因此不需要额外的replace()方法(注意:正则表达式中没有点)。 -
看起来你有一个合理的开始。你有什么困难?
-
问题是我让它识别上述不同格式的数字。除非字符串之前有“电话:”或类似的东西,否则我无法弄清楚如何让它接受它仍然是一个电话号码。它应该能够确定我是用该线路作为电话号码而不是标记为传真的东西。
-
你能展示一些示例字符串吗
-
示例输入字符串包括:+111-111-1111,电话:111-111-1111,电话号码:(111)-111-1111 等。