如何使用libphonenumber从文本文档中获取有效的电话号码?

时间:2016-12-23 07:21:13

标签: java regex libphonenumber

libphonenumber需要电话号码和国家/地区名称作为参数 验证电话号码。

        PhoneNumber numberProto = phoneUtil.parse("044 668 18 00", "CH");
        System.out.println(numberProto);
        System.out.println("is valid: "+phoneUtil.isValidNumber(numberProto));

我可以使用正则表达式从文本文档中找到电话号码,但不能找到与该特定电话号码相关联的国家/地区名称。

请建议我从文本中找到有效的电话号码。

示例输入:

..some text.. first number +13478093374 ..some text..
some new text.. second number.. +91 774-5001-827 ..some text.
some new text.. third number.. 044 668 18 00 ..some text.
some new text.. forth number.. 020-2689-0455 ..some text.

所以各自的输出应该是,

phoneUtil.parse("044 668 18 00", "CH") //valid
phoneUtil.parse("+91 774-5001-827", "IN") //valid
phoneUtil.parse("+13478093374", "US") //valid
phoneUtil.parse("020-2689-0455", "IN") //valid

请建议添加国家/地区参数的算法。

1 个答案:

答案 0 :(得分:0)

您可以像这样使用正则表达式:

"(\d\d\d)-(\d\d\d\d)-(\d\d\d)\s"

然后使用这样的代码:

Pattern pattern = Pattern.compile("(\\d\\d\\d)-(\\d\\d\\d\\d)-(\\d\\d\\d)\\s");
String phoneNumber = "";
String text = "..some text.. valid number 774-0000-827 ..some text..";
Matcher matcher = pattern.matcher(text);

if (matcher.find())
{
    phoneNumber += matcher.group(1) + " ";
    phoneNumber += matcher.group(2) + " ";
    phoneNumber += matcher.group(3) + " ";

    PhoneNumber numberProto = phoneUtil.parse(phoneNumber, "CH");
    System.out.println(numberProto);
    System.out.println("is valid: "+ phoneUtil.isValidNumber(numberProto));
}