正则表达式
- 正则表达式可以用字符串来描述规则,并用来匹配字符串
- 使用正则表示式的好处:
- 一个正则表达式就是一个描述规则的字符串
- 只需要编写正确的规则,就可以让正则表达式引擎判断目标字符串是否符合规则
- 正则表达式是一套标准,可以用于任何语言
- JDK内置正则表达式引擎:java.util.regex
一:匹配规则
二:常用正则规则
序号 |
规范 |
描述 |
1 |
\\ |
表示反斜杠(\)字符 |
2 |
\t |
表示制表位 |
3 |
\n |
表示换行 |
4 |
[abc] |
字符a、b、c |
5 |
[^abc] |
除了a、b、c之外的任意字符 |
6 |
[a-zA-Z0-9] |
表示由字母、数字组成 |
7 |
\d |
表示数字 |
8 |
\D |
表示非数字 |
9 |
\w |
表示字母、数字、下划线 |
10 |
|W |
表示非字母、数字、下 |
11 |
\s |
表示所有空白字符 |
12 |
\S |
表示所有非空白字符 |
13 |
^ |
行的开头 |
14 |
$ |
行的结尾 |
15 |
. |
匹配出了换行之外的任意字符 |
三:数量表示
序号 |
规范 |
描述 |
1 |
X |
必须出现1次 |
2 |
X? |
可以出现0次或1次 |
3 |
X* |
可以出现0次、1次、或多次 |
4 |
X+ |
可以出现1次或多次 |
5 |
X |
必须出现n次 |
6 |
X |
必须出现n次以上 |
7 |
X |
必须出现n~m次 |
四:逻辑运算符
序号 |
规范 |
描述 |
1 |
XY |
X规范后面跟着Y规范 |
2 |
X|Y |
X规范或Y规范 |
3 |
(X) |
作为一个捕获组规范 |
五:使用案例
- 日期的验证
package day07;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//测试正则表达式
public class Demo03 {
public static void main(String[] args) {
String str = "1983-11-31";
String pat = "[^0]\\d{3}-[0-1]\\d{1}-[0-3][0-9]";
// 指定正则表达式规则
Pattern compile = Pattern.compile(pat);
// 返回匹配结果对象
Matcher matcher = compile.matcher(str);
// 匹配结果对象执行验证
if (matcher.matches()) {
System.out.println("合法");
}else {
System.out.println("不合法");
}
}
}
- 电话号码验证
package day07;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//测试电话号码正则表达式
public class Demo04 {
public static void main(String[] args) {
// 用户输入
String str = "13549443932";
// 定义正则表达式
String pat = "[1]\\d{2}\\d{8}";
// 指定正则表达式规则
Pattern compile = Pattern.compile(pat);
// 得到匹配结果对象
Matcher matcher = compile.matcher(str);
// 判断匹配结果
if (matcher.matches()) {
System.out.println("合法");
}else {
System.out.println("不合法");
}
}
}