正则表达式

作用:做数据校验的,就是把填写的字符串判断是否满足正则表达式的要求,如果满足要求返回true,不满足要求返回false;【比如转账输入框只能传入数值等等】

复制代码
	简单理解正则表达式就是一个**字符串**,只是该字符串它是有一定格式的,
	它主要去校验我们输入的字符串是否满足正则表达式的规则,如果满足规则
	返回true,不满足规则返回false

备注:真实开发中常会直接使用别人已经写好了的正则表达式,它也是一种单独的语言;

部分常见正则表达式

字符类:

abc\] a、b 或 c(简单类) \[\^abc\] 任何字符,除了 a、b 或 c(否定) \[a-zA-Z\] a 到 z 或 A 到 Z,两头的字母包括在内(范围) \[a-d\[m-p\]\] a 到 d 或 m 到 p:\[a-dm-p\](并集) \[a-z\&\&\[def\]\] d、e 或 f(交集) \[a-z\&\&\[\^bc\]\] a 到 z,除了 b 和 c:\[ad-z\](减去) \[a-z\&\&\[\^m-p\]\] a 到 z,而非 m 到 p:\[a-lq-z\](减去) 预定义字符类:【两边都可以用,使用**前者都必须要转义** ,*一般它都跟在Greedy 数量词前面*】 . 任何字符(与行结束符可能匹配也可能不匹配) \\d 数字:\[0-9

\D 非数字: [^0-9]

\s 空白字符:[ \t\n\x0B\f\r]

\S 非空白字符:[^\s]

\w 单词字符:[a-zA-Z_0-9]

\W 非单词字符:[^\w]

边界匹配器:

^ 行的开头

$ 行的结尾

\b 单词边界

\B 非单词边界

\A 输入的开头

\G 上一个匹配的结尾

\Z 输入的结尾,仅用于最后的结束符(如果有的话)

\z 输入的结尾

Greedy 数量

X? X,一次或一次也没有

X* X,零次或多次

X+ X,一次或多次

X{n} X,恰好 n 次

X{n,} X,至少 n 次

X{n,m} X,至少 n 次,但是不超过 m 次

验证正则表达式的方法

boolean matches(String regex)

复制代码
	告知此字符串是否匹配给定的正则表达式【jdk1.6 String类中有正则表达式归总】
	通俗一讲就是用来校验输入或指定的字符串是否满足设定的正则表达式的规则 
java 复制代码
例:【校验正则表达式------字符类	[abc] a、b 或 c(简单类)】
public class RegularDemo {
    public static void main(String[] args) {
        //[abc] a、b 或 c(简单类)

        //正则表达式【 [abc] a、b 或 c(简单类)】
        String regular = "abc";
        //模拟输入框输入
        String inputString = "abc";
        boolean matches = inputString.matches(regular);
        System.out.println(matches);//true  说明满足正则表达式规则

        //上面与 ^开始 $结尾 效果一样,这更能提现正则表达式
        String regular1 = "^abc$";
        boolean matches1 = inputString.matches(regular1);
        System.out.println(matches1);//true

        //匹配错误
        String regular2 = "^abG$";
        boolean matches2 = inputString.matches(regular2);
        System.out.println(matches2);//false 因为不满足正则表达式的规则

    }
}

//这例之后,上面的部分常见正则表达式,即可这样参模

案例

例一

java 复制代码
模拟输入正确的邮政编码【邮箱是6位数字】
//\d 数字:[0-9] 【两种方式都能表示数字】
//X{n} X,恰好 n 次 
public class RegularDemo {
    public static void main(String[] args) {
        //正则表达式【 [0-9] :只表示一个0-9范围的数字】
        String regular = "^[0-9]$";
        //模拟输入框输入6位的邮政编码
        String inputString = "747868";
        //验证【错误】
        boolean matches = inputString.matches(regular);
        System.out.println(matches);//false 因为[0-9]只占1个数字,所以匹配不成功

        //验证【正确,方式一】
        String regular1 = "^[0-9][0-9][0-9][0-9][0-9][0-9]$";//表示6个且每位0-9的数字
        boolean matches1 = inputString.matches(regular1);
        System.out.println(matches1);//true

        //验证【错误,方式二】
        String regular2 = "^\\d$";//使用\d时需要转义前加\,即\\d表示1位0-9的数字,想几位即"\\d\\d\\d......"几个
        boolean matches2 = inputString.matches(regular2);
        System.out.println(matches2);//false 【匹配错误,因为\\d只表示一位数字】
        //验证【正确,方式二】
        String regular3 = "^\\d\\d\\d\\d\\d\\d$";//表示6个且每位0-9的数字
        boolean matches3 = inputString.matches(regular3);
        System.out.println(matches3);//true

        //验证【正确,方式三】
        String regular4 = "^\\d{6}$";//就是指定有6位0-9的数字
        boolean matches4 = inputString.matches(regular4);
        System.out.println(matches4);//true
    }
}

例二

java 复制代码
模拟输入正确的手机号码(11位 如:1[5-9]{9} 理解1开头,5-9中的其中1个数字,任意9个数字)
public class RegularDemo {
    public static void main(String[] args) {
        //正则表达式
        String regular = "^1[5-9]\\d{9}$";//指定1开头,5-9中的一位,\\d{9}是9个0-9的任意数字
        //模拟输入框输入
        String inputString = "18557678689";//有11位,并符合正则表达式
        //验证
        boolean matches = inputString.matches(regular);
        System.out.println(matches);//true
    }
}

例三

java 复制代码
模拟输入正确的用户名,最少2位,最大7位
//  \w 单词字符:[a-zA-Z_0-9] 表示任意字母和数字及下划线_ ,\w需要转义成\\w
//	X{n,m} X,至少 n 次,但是不超过 m 次 
public class RegularDemo {
    public static void main(String[] args) {
        //正则表达式
        String regular = "^\\w{2,7}";//至少[2,7]个任意[a-zA-Z_0-9]的数字或字母及下划线_;2,3,4,5,6,7
        //模拟输入框输入
        String inputString = "ww_88";//满足[2,7]个数字或字母及下划线_
        //验证
        boolean matches = inputString.matches(regular);
        System.out.println(matches);//true
    }
}

例四

java 复制代码
模拟输入正确的身份证号码,17位数字+1位(数字或者X)
public class RegularDemo {
    public static void main(String[] args) {
        //正则表达式
        String regular = "^\\d{17}(\\d|X)$";//17个0-9的数字+1个0-9的数字或X字母
        //模拟输入框输入
        String inputString = "50013020099997801X";
        //验证
        boolean matches = inputString.matches(regular);
        System.out.println(matches);//true
    }
}

例五

java 复制代码
模拟输入正确的QQ邮箱,7-10位数字[email protected]
public class RegularDemo {
    public static void main(String[] args) {
        //正则表达式
        String regular = "^\\d{7,9}@qq.com$";//注意:这里的.是表示任何字符
        //模拟输入框输入【错误】
        String inputString = "5008948@qqxcom";//上面的.表示任意字符,所以这里都匹配
        //验证
        boolean matches = inputString.matches(regular);
        System.out.println(matches);//true




        //正则表达式
        String regular1 = "^\\d{7,9}@qq\\.com$";//注意:这里的.是表示任何字符,需要指定是.就必须要转义
        //模拟输入框输入【正确】
        String inputString1 = "[email protected]";//上面的.表示任意字符,所以这里都匹配
        //验证
        boolean matches1 = inputString1.matches(regular1);
        System.out.println(matches1);//true
    }
}

备注:实际开发中直接百度抽取别人写好的正则表达式,如只能配备中文、除数字等等,直接把核心放到上面regular变量中即可

例六

使用trim().split(regular)

java 复制代码
模拟输入正确值,去除其中所有空格拿到有效值
//	\s 空白字符:[ \t\n\x0B\f\r] 需要转义
public class RegularDemo {
    public static void main(String[] args) {
        //正则表达式
        //String regular = "^\\s+$";//注意:这里如果加上^开始$结束,不能生效
        String regular = "\\s+";//作用去除除了字符串前后以内的空白字符
        //模拟输入框输入
        String inputString = "  50    08948@    qqx    co m  ";
        //验证
        String[] splits = inputString.trim().split(regular);//加上trim去掉前后空格
        System.out.println(Arrays.toString(splits));//[50, 08948@, qqx, co, m]
    }
}
相关推荐
apcipot_rain1 小时前
【应用密码学】实验五 公钥密码2——ECC
前端·数据库·python
辛一一4 小时前
neo4j图数据库基本概念和向量使用
数据库·neo4j
熊大如如5 小时前
Java 反射
java·开发语言
巨龙之路5 小时前
什么是时序数据库?
数据库·时序数据库
蔡蓝5 小时前
binlog日志以及MySQL的数据同步
数据库·mysql
猿来入此小猿5 小时前
基于SSM实现的健身房系统功能实现十六
java·毕业设计·ssm·毕业源码·免费学习·猿来入此·健身平台
goTsHgo6 小时前
Spring Boot 自动装配原理详解
java·spring boot
卑微的Coder6 小时前
JMeter同步定时器 模拟多用户并发访问场景
java·jmeter·压力测试
是店小二呀6 小时前
【金仓数据库征文】金融行业中的国产化数据库替代应用实践
数据库·金融·数据库平替用金仓·金仓数据库2025征文
pjx9876 小时前
微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
java·spring cloud·微服务·eureka