正则表达式

正则表达式

  • 正则表达式可以用字符串来描述规则,并用来匹配字符串
  • 使用正则表示式的好处:
    • 一个正则表达式就是一个描述规则的字符串
    • 只需要编写正确的规则,就可以让正则表达式引擎判断目标字符串是否符合规则
    • 正则表达式是一套标准,可以用于任何语言
    • 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) 作为一个捕获组规范

五:使用案例

  1. 日期的验证
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("不合法");
        }
    }
}
  1. 电话号码验证
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("不合法");
        }
    }
}
posted @ 2021-01-21 20:41  shenpro  阅读(72)  评论(0)    收藏  举报