正则表达式是用特殊字符组合描述文本规则的强大工具.
在 Java 中,正则表达式是通过 str.matches(正则表达式规则)
来实现的。
以下是核心语法和案例:
[]
中括号表达式
匹配中括号中的任意一个字符.
[a-z]
表示字母 a 到 z 的范围
[^abc]
表示排除 a/b/c 的任意字符
^
在中括号内表示”排除”
1 2 3 4 5 6
| System.out.println("a".matches("[aeiou]"));
System.out.println("k".matches("[^0-9]"));
System.out.println("A".matches("[A-Z0-9]"));
|
\
转义字符与元字符
转义字符将其后紧跟的字符标记为有特殊含义的元字符(Metacharacter)
元字符 |
作用 |
Java 正则写法 |
. |
匹配任意字符(除换行符) |
\\. |
\d |
匹配数字 |
\\d |
\D |
匹配非数字 |
\\D |
\w |
匹配字母、数字、下划线 |
\\w |
\W |
匹配非单词字符 |
\\W |
\s |
匹配空格、制表符等 |
\\s |
\b |
匹配单词边界 |
\\b |
1 2 3 4 5 6
| System.out.println("123".matches("\\d{3}"));
System.out.println("a1".matches(".*\\D.*"));
System.out.println("bobcat".matches(".*\\bcat"));
|
限定符
1. 模糊限定符
符号 |
作用 |
示例 |
* |
匹配 0 次或多次 |
a* |
+ |
匹配 1 次或多次 |
\\d+ |
? |
匹配 0 次或 1 次 |
xyz? |
1 2 3 4 5 6
| System.out.println("abbb".matches("ab\*"));
System.out.println("7".matches("\\d+"));
System.out.println("https".matches("https?"));
|
2. 精确限定符
符号 |
作用 |
示例 |
{n} |
匹配恰好 n 次 |
a{3} |
{n,} |
匹配至少 n 次 |
\\d{2,} |
{n,m} |
匹配至少 n 次,至多 m 次 |
a{2,4} |
1 2 3 4 5 6
| System.out.println("010-12345678".matches("\\d{3}-\\d{8}"));
System.out.println("aaa".matches("a{2,4}"));
System.out.println("12345".matches("\\d{5,}"));
|
综合案例
- 邮箱格式验证
1 2
| String regex = "[a-zA-Z0-9]+@[a-z]+\\.[a-z]{2,3}"; System.out.println("test@mail.com".matches(regex));
|
- 日期格式验证(YYYY-MM-DD)
1 2
| String regex = "\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])"; System.out.println("2023-10-05".matches(regex));
|