java手机号、邮箱、日期正则表达式实例代码
更新时间:2026年01月07日 08:22:11 作者:Cloud_.
在Java编程领域中,正则表达式被视为一种高效的文本处理手段,经常被应用于检测字符串是否符合特定的格式要求,这篇文章主要介绍了java手机号、邮箱、日期正则表达式的相关资料,需要的朋友可以参考下
Java正则核心API
Java中用 java.util.regex 包的两个类:
Pattern:编译正则表达式Matcher:执行匹配操作
1. 验证手机号
String regex = "1[3-9]\\d{9}";
boolean isValid = "18812345678".matches(regex); // true
2. 提取邮箱
String text = "联系我:admin@test.com 或 user@qq.com";
Pattern pattern = Pattern.compile("\\w+@\\w+\\.\\w+");
Matcher matcher = pattern.matcher(text);
while(matcher.find()) {
System.out.println(matcher.group()); // 输出两个邮箱
}
3. 替换敏感信息
String phone = "手机号:18812345678";
String masked = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
// 结果:手机号:188****5678
5个必会语法(附Java代码)
1. 基础匹配
| 符号 | 说明 | Java示例 | 匹配结果 |
|---|---|---|---|
\d | 数字 | "a\\d" | a1, a9 |
\w | 字母数字下划线 | "\\w+" | hello, user1 |
. | 任意字符 | "a.c" | abc, a@c |
^ | 开头 | "^Java" | Java真好用 |
$ | 结尾 | "end$" | 这是end |
2. 量词(控制次数)
| 符号 | 说明 | 示例 | 匹配内容 |
|---|---|---|---|
? | 0或1次 | "a?" | “”, a |
+ | 1次或多次 | "\\d+" | 1, 123 |
* | 0次或多次 | "a*" | “”, aaaa |
{n} | 精确n次 | "\\d{4}" | 2023 |
3. 字符集合
// 匹配元音字母
Pattern.compile("[aeiou]"); // 匹配 a, e, i 等
// 匹配非数字
Pattern.compile("[^0-9]"); // 匹配 a, @, # 等
4. 分组提取
String text = "电话:188-1234-5678";
Pattern pattern = Pattern.compile("(\\d{3})-(\\d{4})-(\\d{4})");
Matcher matcher = pattern.matcher(text);
if(matcher.find()) {
System.out.println(matcher.group(1)); // 188
System.out.println(matcher.group(2)); // 1234
System.out.println(matcher.group(3)); // 5678
}
5. 贪婪 vs 非贪婪
// 贪婪模式(默认)
Pattern.compile("a.*b").matcher("aXXXbYYYb").find(); // 匹配整个字符串
// 非贪婪模式(加?)
Pattern.compile("a.*?b").matcher("aXXXbYYYb").find(); // 只匹配aXXXb
避坑
转义问题:Java中
\要写两次// 错误写法:Pattern.compile("\d+"); // 正确写法: Pattern.compile("\\d+");性能优化:复用
Pattern对象// 不要每次编译(低效): for(...) { Pattern.matches(regex, text); } // 正确做法: Pattern pattern = Pattern.compile(regex); for(...) { pattern.matcher(text).matches(); }边界检查:用
^和$严格匹配// 可能意外匹配子串: "123abc".matches("\\d+"); // false(正确) "123".matches("\\d+"); // true // 错误示例:没有用^$导致误匹配 "a1b2".matches("\\d+"); // false(正确)
总结
到此这篇关于java手机号、邮箱、日期正则表达式的文章就介绍到这了,更多相关java手机号、邮箱、日期正则表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
IDEA快速搭建spring boot项目教程(Spring initializr)
这篇文章主要介绍了IDEA快速搭建spring boot项目教程(Spring initializr),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-01-01
Java开发之spring security实现基于MongoDB的认证功能
这篇文章主要介绍了Java开发之spring security实现基于MongoDB的认证功能,结合实例形式分析了spring security在非JDBC环境下的自定义认证服务实现技巧,需要的朋友可以参考下2017-11-11
Java 实现repalceAll只替换第二个匹配到的字符串
这篇文章主要介绍了Java 实现repalceAll只替换第二个匹配到的字符串,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-12-12
ReadWriteLock接口及其实现ReentrantReadWriteLock方法
下面小编就为大家带来一篇ReadWriteLock接口及其实现ReentrantReadWriteLock方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-06-06


最新评论