java手機(jī)號(hào)、郵箱、日期正則表達(dá)式實(shí)例代碼
Java正則核心API
Java中用 java.util.regex 包的兩個(gè)類:
Pattern:編譯正則表達(dá)式Matcher:執(zhí)行匹配操作
1. 驗(yàn)證手機(jī)號(hào)
String regex = "1[3-9]\\d{9}";
boolean isValid = "18812345678".matches(regex); // true
2. 提取郵箱
String text = "聯(lián)系我: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()); // 輸出兩個(gè)郵箱
}
3. 替換敏感信息
String phone = "手機(jī)號(hào):18812345678";
String masked = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
// 結(jié)果:手機(jī)號(hào):188****5678
5個(gè)必會(huì)語法(附Java代碼)
1. 基礎(chǔ)匹配
| 符號(hào) | 說明 | Java示例 | 匹配結(jié)果 |
|---|---|---|---|
\d | 數(shù)字 | "a\\d" | a1, a9 |
\w | 字母數(shù)字下劃線 | "\\w+" | hello, user1 |
. | 任意字符 | "a.c" | abc, a@c |
^ | 開頭 | "^Java" | Java真好用 |
$ | 結(jié)尾 | "end$" | 這是end |
2. 量詞(控制次數(shù))
| 符號(hào) | 說明 | 示例 | 匹配內(nèi)容 |
|---|---|---|---|
? | 0或1次 | "a?" | “”, a |
+ | 1次或多次 | "\\d+" | 1, 123 |
* | 0次或多次 | "a*" | “”, aaaa |
{n} | 精確n次 | "\\d{4}" | 2023 |
3. 字符集合
// 匹配元音字母
Pattern.compile("[aeiou]"); // 匹配 a, e, i 等
// 匹配非數(shù)字
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 非貪婪
// 貪婪模式(默認(rèn))
Pattern.compile("a.*b").matcher("aXXXbYYYb").find(); // 匹配整個(gè)字符串
// 非貪婪模式(加?)
Pattern.compile("a.*?b").matcher("aXXXbYYYb").find(); // 只匹配aXXXb
避坑
轉(zhuǎn)義問題:Java中
\要寫兩次// 錯(cuò)誤寫法:Pattern.compile("\d+"); // 正確寫法: Pattern.compile("\\d+");性能優(yōu)化:復(fù)用
Pattern對(duì)象// 不要每次編譯(低效): for(...) { Pattern.matches(regex, text); } // 正確做法: Pattern pattern = Pattern.compile(regex); for(...) { pattern.matcher(text).matches(); }邊界檢查:用
^和$嚴(yán)格匹配// 可能意外匹配子串: "123abc".matches("\\d+"); // false(正確) "123".matches("\\d+"); // true // 錯(cuò)誤示例:沒有用^$導(dǎo)致誤匹配 "a1b2".matches("\\d+"); // false(正確)
總結(jié)
到此這篇關(guān)于java手機(jī)號(hào)、郵箱、日期正則表達(dá)式的文章就介紹到這了,更多相關(guān)java手機(jī)號(hào)、郵箱、日期正則表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA快速搭建spring?boot項(xiàng)目教程(Spring?initializr)
這篇文章主要介紹了IDEA快速搭建spring?boot項(xiàng)目教程(Spring?initializr),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
Java利用沙箱支付實(shí)現(xiàn)電腦掃碼支付教程
當(dāng)我們制作的項(xiàng)目需要實(shí)現(xiàn)電腦掃碼支付功能時(shí),我們往往會(huì)采用沙箱支付來模擬實(shí)現(xiàn)。本文將主要介紹如何在Java中利用沙箱支付實(shí)現(xiàn)這一功能,需要的可以參考一下2022-01-01
Java開發(fā)之spring security實(shí)現(xiàn)基于MongoDB的認(rèn)證功能
這篇文章主要介紹了Java開發(fā)之spring security實(shí)現(xiàn)基于MongoDB的認(rèn)證功能,結(jié)合實(shí)例形式分析了spring security在非JDBC環(huán)境下的自定義認(rèn)證服務(wù)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-11-11
Java 實(shí)現(xiàn)repalceAll只替換第二個(gè)匹配到的字符串
這篇文章主要介紹了Java 實(shí)現(xiàn)repalceAll只替換第二個(gè)匹配到的字符串,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12
ReadWriteLock接口及其實(shí)現(xiàn)ReentrantReadWriteLock方法
下面小編就為大家?guī)硪黄猂eadWriteLock接口及其實(shí)現(xiàn)ReentrantReadWriteLock方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06

