正则表达式(Regular Expression)是一种文本模式匹配工具,常用于字符串校验、提取、替换等操作。
🧠 1. 基础元字符(Metacharacters)
| 符号 |
含义 |
示例 |
匹配内容 |
. |
任意单个字符(除换行) |
a.b |
acb, a9b |
^ |
匹配字符串开始 |
^abc |
abc123 ✅,xabc ❌ |
$ |
匹配字符串结束 |
abc$ |
123abc ✅,abc123 ❌ |
* |
重复 0 次或多次 |
ab*c |
ac, abc, abbbc |
+ |
重复 1 次或多次 |
ab+c |
abc, abbbc |
? |
重复 0 次或 1 次(可选) |
ab?c |
ac, abc |
[] |
匹配一个字符 |
[abc] |
a, b, c |
[^] |
匹配不在集合内的字符 |
[^0-9] |
非数字 |
{n} |
重复 n 次 |
a{3} |
aaa |
{n,} |
至少重复 n 次 |
a{2,} |
aa, aaa |
{n,m} |
重复 n~m 次 |
a{2,4} |
aa, aaa, aaaa |
| ` |
` |
或 |
`abc |
() |
分组 |
(abc)+ |
匹配多个 abc |
📚 2. 常用转义字符
| 符号 |
含义 |
示例 |
匹配内容 |
| \d |
数字 [0-9] |
\d{3} |
123 |
| \D |
非数字 |
\D+ |
abc |
| \w |
单词字符 [a-zA-Z0-9_] |
\w+ |
abc_123 |
| \W |
非单词字符 |
\W+ |
#@! |
| \s |
空白字符(空格、Tab、换行) |
\s+ |
" "、\t、\n |
| \S |
非空白字符 |
\S+ |
abc123 |
| \b |
单词边界 |
\bword\b |
匹配独立单词 word |
| \B |
非单词边界 |
\Bword\B |
中间位置 xwordx |
🔐 3. 常用校验正则(可直接用于 Java)
✅ 邮箱
^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
✅ 手机号(中国大陆)
^1[3-9]\d{9}$
✅ 身份证(大陆 18位)
^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$
✅ 密码强度(6-12位,字母或数字)
^[A-Za-z0-9]{6,12}$
✅ 密码必须包含大小写字母 + 数字(6-16位)
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d]{6,16}$
✅ URL 校验
^(https?://)?([a-zA-Z0-9.-]+)(:[0-9]{1,5})?(/.*)?$
🧪 4. Java 中正则使用方式
🔍 字符串匹配
String regex = "^1[3-9]\\d{9}$";
boolean isValid = Pattern.matches(regex, "13812345678");
🔎 字符串提取
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("abc123xyz456");
while (matcher.find()) {
System.out.println(matcher.group()); // 输出 123 和 456
}