在一串字符串中Java使用正则匹配电话号码的方法
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.");
}
}
}
这段代码首先导入了必要的Pattern和Matcher类,然后定义了一个测试字符串和一个正则表达式。接着,它使用Pattern.compile()方法编译正则表达式,并使用matcher()方法创建Matcher对象。最后,使用find()方法查找匹配项,并使用group()方法输出找到的电话号码。
这段代码是一个完整的Java程序,可以直接运行,并测试正则表达式匹配电话号码的功能。通过修改测试字符串,我们可以测试不同的电话号码格式。
2.使用Java正则表达式匹配电话号码示例
以下是一些使用Java正则表达式匹配电话号码的例子。每个例子都包含了一个测试字符串和一个正则表达式,以及如何使用Pattern和Matcher类来查找和匹配电话号码。
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正则表达式来匹配不同格式的电话号码。我们可以根据需要调整正则表达式来匹配特定的电话号码格式。
在一串字符串中Java使用正则匹配电话号码的方法的更多相关文章
- 在一串字符串中找到与正则表达式匹配的字符串?(例如:export_20170717_out.log 找到20170717)
如题:提取字符串:export_20170717_out.log 对应的日期: package dodo; import java.util.regex.Matcher; import java.ut ...
- 【转】Java中字符串中子串的查找共有四种方法(indexof())
原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int ...
- Java中字符串中子串的查找共有四种方法(indexof())
Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字 ...
- php中的正则函数:正则匹配,正则替换,正则分割 所有的操作都不会影响原来的字符串.
有一个长期的误解, 如果要分组, 必须用 小括号 和 |, 而不能用 中括号 和 |. [ab|AB]表示的不是 匹配 ab或 AB, 而是表示 匹配 a,b, |, A, B 这5个字符中 的任意 ...
- 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串
写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...
- iOS:使用NSRegularExpression正则去掉一串字符串中所有的特殊字符和标点
一.介绍 在开发中,有时我们需要对一串字符串做特殊的处理后再使用,例如判断是不是特殊字符.去掉所有的特殊字符等.做处理的方法有很多,最简单的就是for循环遍历一个个的比较处理,最好用的应该是使用正则表 ...
- c#转义字符串中的所有正则特殊字符
/// <summary> /// 转义字符串中所有正则特殊字符 /// </summary> /// <param name="input"> ...
- 随机生成一串字符串(java)
该随笔为开发笔记 今天在公司接手了一个项目,在看该项目老代码时,发现上一位大佬写的随机取一串字符串还不错,在此做一次开发笔记 在他的基础上我做了点改动,但是原理一样 /** * 随机取一段字符串方法1 ...
- Java处理正则匹配卡死(正则回溯问题)
目录 背景 项目现场问题 问题跟踪 优化方案 处理正则问题 使用子线程来匹配正则实现 监控线程实现 最优选择方案 参考文章 正则匹配卡死怎么来的? 背景 背景:这次问题的背景是项目上遇到了,在使用正则 ...
- [Python正则表达式] 字符串中xml标签的匹配
现在有一个需求,比如给定如下数据: 0-0-0 0:0:0 #### the 68th annual golden globe awards #### the king s speech earns ...
随机推荐
- docker制作springboot镜像
以下步骤在具有Docker环境的Linux机器上操作. 把springboot-1.0.0.jar放到/usr/local/springboot目录下,并在该目录下创建Dockerfile文件,内容为 ...
- 【VyOS-开源篇-3】- container for vyos 搭建 Halo 博客-vyos-开源篇
文章说明:介绍在vyos软路由上配置container容器,vyos最新滚动版1.5已经支持在vyos命令行中启动docker容器,在vyos 官网介绍是说1.3版本之后就都有这个功能了,如果你的版本 ...
- STM32 CubeMX 学习:有关说明
背景 STM32 是我以前学过的,而很久没有整理过的.因为之前学习的时间比较早,再加上各种资料要么不成熟,要么不齐全:再加上自己一开始没有比较完善的学习经验:以至于我的学习并不扎实. 趁着 STM 的 ...
- vba--将excel单元格格式改为常规格式
Sub 改格式() ActiveWorkbook.activesheet.Select For Each Rng In ActiveSheet.UsedRange With Rng .NumberFo ...
- 计算订单签收率的sql查询思路与过程(涉及百分比和四舍五入)
领导提出一个签收率需求,想要通过数据库达到excel中表现的形式,提高计算速度和工作效率, 如下形式: 数据库中表数据结构: 部分数据如下: sql语句思路如下: -- 1.已签收:以物流反馈管道,状 ...
- 【ClickHouse】0:clickhouse学习3之时间日期函数
官方文档: https://clickhouse.tech/docs/zh/sql-reference/functions/date-time-functions/ 常用的clickhouse时间函数 ...
- Node.js 的ORM(Sequelize) 的使用
Sequelize是一个Node.js 的ORM.什么是ORM呢?对象关系映射(Object Relational Mapping).什么意思?就是在编程语言中,很容易创建对象,如果在面向对象的语言中 ...
- AT_abc215F 题解
考虑二分答案. 假设当前二分的答案为 \(k\),那么对于每个点,距离大于等于 \(k\) 的点构成了平面上 \(4\) 个子平面. 那么只需查询子平面中是否存在点即可,类似于窗口的星星,把问题转换成 ...
- vulnhub - hackme2
vulnhub - hackme2 信息收集 还是跟1一样,目录扫描之类的没啥利用点,sql注入先打一遍 SQL注入 sqlmap -u 'http://192.168.157.163/welcome ...
- VUE手稿1