一、练习1

java
package com.lkbhua.MyApi.BigDecimal;
public class Test1 {
public static void main(String[] args) {
/*验证手机号码、邮箱号、座机电话,利用正则表达式*/
// 心得:
// 拿着正确的数据,从左到往右依次去写
// 电话:18373838319
// 第一位都是1,第二位是3-9,第三位-第11位都是0-9数字
String regex1 = "1[3-9]\\d{9}";
System.out.println("18373838319".matches(regex1));
System.out.println("18371238312".matches(regex1));
System.out.println("18374128313".matches(regex1));
// 座机号:010-12345678
// 020-2324242 02122442 027-42424 0712-3242434
// 一:区号 0\d{2,3} 0开头,表示从第二位开始可以是数字,可以出现2-3次
// 二:- ?次数(0或者1)次
// 三:号码 第一位不能以0开头,从第二位开始可以任意的数字,号码的总长度5-10位
String regex2 = "0\\d{2,3}-?[1-9]\\d{4,9}";
System.out.println("010-12345678".matches(regex2));
System.out.println("020-2324242".matches(regex2));
System.out.println("02122442".matches(regex2));
System.out.println("027-42424".matches(regex2));
System.out.println("0712-3242434".matches(regex2));
System.out.println("010-1234567".matches(regex2));
// 邮箱:
// 3232323@qq.com zhangsan@163.com 123@gmail.com diei0009@pci.com.cn
// 思路:
// @前面:\\w+ : 表示任意的字母数字下划线至少出现 一次
// @中间:只能出现一次
// @后面: 3.1 .的左边:可以是字母可以是数字 [\\w^_]{2,6}
// 3.2 任意的字母加数字只能出现2-6次,不能出现下划线
// 3.3 .的右边:大小写字母都可以,只能出现2-3次:[a-zA-Z]{2,3}
// 我们可以把3.1和3.2看成一组,这一组可以出现1次或者两次
String regex3 = "\\w+@[\\w^_]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
System.out.println("3232323@qq.com".matches(regex3));
System.out.println("zhangsan@163.com".matches(regex3));
System.out.println("123@gmail.com".matches(regex3));
System.out.println("diei0009@pci.com.cn".matches(regex3));
String regex4 = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\ d";
// 23:59:59
// | 表示或
// 01 02 03....
// 10 11 12 13...19
// 20 21 22 23
二、练习2

java
package com.lkbhua.MyApi.BigDecimal;
public class Test2 {
public static void main(String[] args) {
/*请编写正则表达式验证用户是否满足要求:
大小写字母、数字、下划线一共4-16位
请编写正则表达式验证身份证是否满足要求*/
String regx1 = "[a-zA-Z0-9_]{4,16}";
System.out.println("a1234567890".matches(regx1));
System.out.println("lkb-code".matches(regx1));
// case1:
// 18位,前17位0-9,第18位0-9或者X或者x
String regx2 = "[1-9]\\d{16}(\\d|X|x)";
System.out.println("12345678901234567".matches(regx2));
// 忽略大小写的方式
String regx3 = "(?i)abc";
// 如果只想忽略某一位或者某一部分可以这样:
String regx4 = "a(?i)bc";
System.out.println("------------------");
System.out.println("ABC".matches(regx3)); // true
System.out.println("ABC".matches(regx4)); // false
// case2:
// 身份证的严格校验
// 前6位:省份、市区、派出所等信息,第一位不能是0,后面五位是任意数字
// 年前半部: 18、19、20
// 年后半部: 任意数字出现两次
// 月份: 01-09,10,11,12
// 日期: 01-31.
// 后面四位: 任意数字出现3次,最后一位可以是数字也可以是X或者x
// 心得:
// 第一步:按照正确的数据进行拆分
// 第二步:对拆分的数据进行编写正则
// 第三步:进行拼接
String regx5 = "[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])(\\d|(?i)x)";
// 快捷键Alt+Shift+上移键:挪动行代码
}
}

声明:
以上均来源于B站@ITheima的教学内容!!!
本人跟着视频内容学习,整理知识引用