写点什么

在一串字符串中 Java 使用正则匹配电话号码的方法

作者:EquatorCoco
  • 2024-08-09
    福建
  • 本文字数:2372 字

    阅读完需:约 8 分钟

1.使用正则表达式来匹配电话号码


在 Java 中,使用正则表达式匹配电话号码是一个常见的需求。电话号码的格式可能因国家/地区而异,但一个典型的格式可能是这样的:(123) 456-7890。在这个例子中,我将提供一个 Java 程序,该程序使用正则表达式来匹配这种格式的电话号码。


首先,我们需要了解电话号码的正则表达式。在这个例子中,我们将使用以下正则表达式:

regex复制代码
\(\d{3}\) \d{3}-\d{4}
复制代码


这个表达式的意思是:

  • \( 和 \) 匹配括号()

  • \d{3} 匹配 3 个数字。

  • 空格匹配空格字符。

  • \d{3}-\d{4} 匹配 3 个数字,一个连字符,然后是 4 个数字。

接下来,我们来看如何在 Java 代码中使用这个正则表达式来匹配电话号码:

import java.util.regex.Matcher;  import java.util.regex.Pattern;    public class PhoneNumberMatcher {      public static void main(String[] args) {          // 测试字符串          String text = "Here is a sample text with a phone number (123) 456-7890 in it.";                    // 正则表达式          String regex = "\\(\\d{3}\\) \\d{3}-\\d{4}";                    // 创建 Pattern 对象          Pattern pattern = Pattern.compile(regex);                    // 创建 matcher 对象          Matcher matcher = pattern.matcher(text);                    if (matcher.find()) {              System.out.println("Found a phone number: " + matcher.group());          } else {              System.out.println("No phone number found.");          }      }  }
复制代码


这段代码首先导入了必要的PatternMatcher类,然后定义了一个测试字符串和一个正则表达式。接着,它使用Pattern.compile()方法编译正则表达式,并使用matcher()方法创建Matcher对象。最后,使用find()方法查找匹配项,并使用group()方法输出找到的电话号码。


这段代码是一个完整的 Java 程序,可以直接运行,并测试正则表达式匹配电话号码的功能。通过修改测试字符串,我们可以测试不同的电话号码格式。


2.使用 Java 正则表达式匹配电话号码示例


以下是一些使用 Java 正则表达式匹配电话号码的例子。每个例子都包含了一个测试字符串和一个正则表达式,以及如何使用PatternMatcher类来查找和匹配电话号码。


2.1 例子 1:匹配标准格式的电话号码

import java.util.regex.Matcher;  import java.util.regex.Pattern;    public class PhoneNumberMatcher {      public static void main(String[] args) {          // 测试字符串          String text = "Call me at (123) 456-7890 or visit my website.";                    // 正则表达式          String regex = "\\(\\d{3}\\) \\d{3}-\\d{4}";                    // 创建 Pattern 对象          Pattern pattern = Pattern.compile(regex);                    // 创建 matcher 对象          Matcher matcher = pattern.matcher(text);                    if (matcher.find()) {              System.out.println("Found a phone number: " + matcher.group());          } else {              System.out.println("No phone number found.");          }      }  }
复制代码


输出:

复制代码
Found a phone number: (123) 456-7890
复制代码


2.2 例子 2:匹配带有空格和括号的电话号码

import java.util.regex.Matcher;  import java.util.regex.Pattern;    public class PhoneNumberMatcher {      public static void main(String[] args) {          // 测试字符串          String text = "My phone number is ( 123 ) 456 - 7890. Please call me.";                    // 正则表达式,允许空格          String regex = "\\(\\s*\\d{3}\\s*\\)\\s*\\d{3}-\\d{4}";                    // 创建 Pattern 对象          Pattern pattern = Pattern.compile(regex);                    // 创建 matcher 对象          Matcher matcher = pattern.matcher(text);                    if (matcher.find()) {              System.out.println("Found a phone number: " + matcher.group());          } else {              System.out.println("No phone number found.");          }      }  }
复制代码


输出:

复制代码
Found a phone number: ( 123 ) 456 - 7890
复制代码


2.3 例子 3:匹配多种格式的电话号码

import java.util.regex.Matcher;  import java.util.regex.Pattern;    public class PhoneNumberMatcher {      public static void main(String[] args) {          // 测试字符串          String text = "You can reach me at (123) 456-7890 or 123.456.7890 or 123-456-7890.";                    // 正则表达式,匹配多种格式          String regex = "\\(\\d{3}\\)\\s*\\d{3}-\\d{4}|\\d{3}[.-]\\d{3}[.-]\\d{4}|\\d{3}-\\d{3}-\\d{4}";                    // 创建 Pattern 对象          Pattern pattern = Pattern.compile(regex);                    // 创建 matcher 对象          Matcher matcher = pattern.matcher(text);                    while (matcher.find()) {              System.out.println("Found a phone number: " + matcher.group());          }      }  }
复制代码


输出:

Found a phone number: (123) 456-7890  Found a phone number: 123.456.7890  Found a phone number: 123-456-7890
复制代码


这些例子展示了如何使用 Java 正则表达式来匹配不同格式的电话号码。我们可以根据需要调整正则表达式来匹配特定的电话号码格式。


文章转载自:TechSynapse

原文链接:https://www.cnblogs.com/TS86/p/18349680

体验地址:http://www.jnpfsoft.com/?from=infoq

用户头像

EquatorCoco

关注

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
在一串字符串中Java使用正则匹配电话号码的方法_Java_EquatorCoco_InfoQ写作社区