java - 如何使用正则表达式提取字符串的电话号码?

标签 java regex string

如果我有一个包含以下内容的字符串:This is 1 test 123-456-7890
我需要提取 1234567890 作为电话号码。我不想提取测试前的数字 1。
我如何在 Java 中使用正则表达式来做到这一点?

我知道一个方法,但我不确定它是否是最好的解决方案:

String inputString = "This is 1 test 123-456-7890";
string result =  inputString.replaceAll("(\\d{3})-(\\d{3})-(\\d{4})",""); 
String phoneNumber = inputString.replace(result, "");

最佳答案

最好的标准方法是使用 libphonenumber .有一个 findNumbers你可以使用的功能。这是一个代码片段

public static void  extractPhoneNumber(String input){


    Iterator<PhoneNumberMatch> existsPhone=PhoneNumberUtil.getInstance().findNumbers(input, "IN").iterator();

    while (existsPhone.hasNext()){
        System.out.println("Phone == " + existsPhone.next().number());
    }
}

关于java - 如何使用正则表达式提取字符串的电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9464323/

相关文章:

Java Regex - 从字符串中提取主题标签

Java - 交替替换逗号

java - 将多个 java 属性值读取到字符串或数组中

java - 2个不同的java类,完全相同的方法,但一个实现了一个接口(interface)

java - ArrayList 跨套接字连接的并发性

javascript - 从空格(逗号)分隔的字符串中提取单词

Java if else 语句改变字符串

java - 包含列表的单例模式

java - 带有 LIKE 的 Spring JPA @Query

javascript - 正则表达式 while 循环仅将 1 个值推送到我的数组