帝国建设网站,营销软件大全,网站属于什么公司,一台电脑如何做网站目录
什么是正则表达式#xff1f;
1. 正则表达式---字符类#xff08;一个大括号匹配一个字符#xff09;#xff1a;
2. 正则表达式---预字符类#xff08;也是匹配一个字符#xff09;#xff1a;
正则表达式---数量词 #xff08;可以匹配多个字符#xff09;…目录
什么是正则表达式
1. 正则表达式---字符类一个大括号匹配一个字符
2. 正则表达式---预字符类也是匹配一个字符
正则表达式---数量词 可以匹配多个字符
正则表达式的练习 1
习题一
习题二
习题三
正则表达式的练习 2
习题一
习题二
正则表达式 小结 什么是正则表达式 正则表达式的作用 在一段文中查找满足要求的内容后面介绍可以校验字符串是否满足一定的规则并用来校验数据格式的的合法性。是一种校验字符串的规则如 如可用来校验用户名是否满足规则、校验密码是否满足规则、校验身份证是否满足规则、校验手机号 是否满足规则。等等 由一个例题引出正则表达式 如例题 验证 QQ 号 QQ号码必须是 6--20 位长度而且必须全部是数字而且首位不能为0 按照以前的方法我们是这样的写的 public class RegexDemo {public static void main(String[] args) {String qq 2233445566;boolean check check(qq);System.out.println(check);}//校验的方法public static boolean check(String qq) {int len qq.length();if (len 6 len 20) {if (!qq.startsWith(0)) {for (int i 0; i qq.length(); i) {if (!(qq.charAt(i) 0 qq.charAt(i) 9)) {return false;}}return true;}}return false;}
}上面的核心思想 是通过不断嵌套满足题目条件 或也可以先把异常数据进行过滤最后就是满足条件的数据return true 明显代码很繁琐这时我们就可以使用正则表达式来简化代码
String qq 2233445566;
System.out.println(qq.matches([1-9]\\d{5,19}));
// [1-9] 表示必须以1-9的数字开头
// \\d{5,19}表示任意数字至少出现5次至多出现19次 APi 查找规则位置 1. 正则表达式---字符类一个大括号匹配一个字符 解释 第 3 和 4 其实是一样的[ad-z]:表示a 或 d 到 z 代码理解
//只能是a b c其中之一
System.out.println(-----------1-------------);
System.out.println(a.matches([abc])); // true
System.out.println(z.matches([abc])); // false//不能出现a b c
System.out.println(-----------2-------------);
System.out.println(a.matches([^abc])); // false
System.out.println(z.matches([^abc])); // true
System.out.println(zz.matches([^abc])); //false
System.out.println(zz.matches([^abc][^abc])); //true// a到z或A到Z(包括头尾的范围)
System.out.println(-----------3-------------);
System.out.println(a.matches([a-zA-Z])); // true
System.out.println(z.matches([a-zA-Z])); // true
System.out.println(aa.matches([a-zA-Z]));//false
System.out.println(zz.matches([a-zA-Z])); //false
System.out.println(zz.matches([a-zA-Z][a-zA-Z])); //true
System.out.println(0.matches([a-zA-Z]));//false
System.out.println(0.matches([a-zA-Z0-9]));//true// [a-d[m-p]] a到d或m到p 和上面一个意思
System.out.println(-----------4-------------);
System.out.println(a.matches([a-d[m-p]]));//true
System.out.println(d.matches([a-d[m-p]])); //true
System.out.println(m.matches([a-d[m-p]])); //true
System.out.println(p.matches([a-d[m-p]])); //true
System.out.println(e.matches([a-d[m-p]])); //false
System.out.println(0.matches([a-d[m-p]])); //false// [a-z[def]] a-z和def的交集。为:def
System.out.println(----------5------------);
System.out.println(a.matches([a-z[def]])); //false
System.out.println(d.matches([a-z[def]])); //true
System.out.println(0.matches([a-z[def]])); //false// [a-z[^bc]] a-z和非bc的交集。(等同于[ad-z])
System.out.println(-----------6------------_);
System.out.println(a.matches([a-z[^bc]]));//true
System.out.println(b.matches([a-z[^bc]])); //false
System.out.println(0.matches([a-z[^bc]])); //false// [a-z[^m-p]] a到z和除了m到p的交集。(等同于[a-1q-z])
System.out.println(-----------7-------------);
System.out.println(a.matches([a-z[^m-p]])); //true
System.out.println(m.matches([a-z[^m-p]])); //false
System.out.println(0.matches([a-z[^m-p]])); //false注意 5 中的第一个 不能单独使用 会被当成字符 2. 正则表达式---预字符类也是匹配一个字符 在介绍与预字符类前介绍一下转义字符 \ 可改变后面那个字符原本的含义 如 双引号在 java 中表示字符串的开头和结尾 若要打印一个双引号就要使用 \ 来将双引号转义成一个普通的双引号不含任何含义 如 要打印一个 \(不含任何含义)可在它前再加一个 \ 进行转义,如 \\ 总之记住两个 \\ 代表一个 \ .... 转义字符以后再谈 System.out.println()// 报错
System.out.println(\);//
System.out.println(\\);// \ 回过 头来 注意 区分大小写书写时要写 \\ 代码理解
//.表示任意一个字符
System.out.println(你.matches(..)); //false
System.out.println(你.matches(.)); //true
System.out.println(你a.matches(..));//true// \\d 表示任意的一个数字只能是一位
// 简单来记:两个\表示一个\
System.out.println(a.matches(\\d)); // false
System.out.println(3.matches(\\d)); // true
System.out.println(333.matches(\\d)); // false//\\w只能是一位单词字符[a-zA-Z_0-9]
System.out.println(z.matches(\\w)); // true
System.out.println(2.matches(\\w)); // true
System.out.println(21.matches(\\w)); // false
System.out.println(你.matches(\\w));//false
System.out.println(A9.matches(\\w\\w));//true// 非单词字符
System.out.println(你.matches(\\W)); // true
System.out.println(---------------------------------------------);注意以上的正则匹配只能校验单个字符
3.正则表达式---数量词 可以匹配多个字符 注意要和前面的 X 配套使用
代码理解
// 必须是数字 字母 下划线 至少 6位
System.out.println(4Aa0_A.matches(\\w{6,}));//true
System.out.println(4Aa.matches(\\w{6,}));//false必须是数字和字符 必须是4位
System.out.println(23dF.matches([a-zA-Z0-9]{4}));//true
System.out.println(23_F.matches([a-zA-Z0-9]{4}));//false
System.out.println(23dF.matches([\\w[^_]]{4}));//true
System.out.println(23_F.matches([\\w[^_]]{4}));//false 正则表达式的练习 1
需求 请编写正则表达式验证用户输入的手机号码是否满足要求。请编写正则表达式验证用户输入的座机号码是否满足要求。请编写正则表达式验证用户输入的邮箱号是否满足要求。 技巧先拿着正确数据将数据分成不同部分
从左到右依次写规则 习题一 正确手机号码 13112345678 13712345667 13945679027 139456790271 手机号要求 1 开头第二个数是 3-9一共 11 位 示例 String regex[1][3-9]\\w{9};
System.out.println(15327998608.matches(regex));//true
System.out.println(12179986090.matches(regex));//false
System.out.println(11179986090.matches(regex));//false
System.out.println(151799860909.matches(regex));//false
System.out.println(05179986090.matches(regex));//false
习题二 正确座机电话号码 020-2324242 02122442 027-42424 0712-3242434 座机号码要求 第一部分区号以 0 开头3 或 4 位:0\\d{2,3}第二部分- - ? 表示-可出现 0 次或 1 次第三部分号码不能以 0 开头号码长度 5-10 位[1-9]\\d{4-9} 表达式如下 String regex20\\d{2,3}-?[1-9]\\d{4-9}
.... 习题三 正确邮箱号码 3232_323qq.com zhan_gsanitcast.cnn dlei0009163.com dlei0009pci.com.cn 邮箱地址要求 第一部分的左边 \\w (表示任意字母数字下划线至少出现一次) 第二部分 表示只能出现一次 第三部分 . 的左边 [ \\w[^_] ] {2,6} 任意的字母加数字总共出现2-6次此时不能出现下划线 . 和 右边(\\.[a-z A-Z]{2-3}){1,2} (一个. 还有 大写字母小写字母都可以只能出现2-3次) 可出现 1 次或 2 次 String regex3\\w[\\w[^_]]{2,6}(\\.[a-zA-Z]{2-3}){1,2}
....
注意这里的 ”点“的表示是
\\. 正则表达式的练习 2
习题一
用户名要求
大小写字母、数字、下划线一共 4-16 位
String regex\\w{4,16};
... 习题二
身份证 简单要求
18 位不以 0 开头前 17 任意数最后一位可以是数字、X、x
String regex1[1-9]\\d{16}(\\d|X|x);//1
String regex2[1-9]\\d{16}[\\dx];//2
... 先学一招 忽略大小写的书写方式 String regex1(?i)abc//忽略abc大小写
System.out.println(ABc.matches(regex1));//trueString regex2a(?i)bc//忽略bc大小写
System.out.println(ABc.matches(regex1));//false 这时我们就可以改写上面的身份证检验练习
String regex1[1-9]\\d{16}(\\d|(?i)x); 小细节 若i 被当作工具了 i 的字体会改变 身份证的严格校验 前六位省份市区派出所等信息第一位不能是 0后五位任意
[1-9]\\d{5}
年份的前半段18、19、20年的后半段任意数字出现两次
(18|19|20)\\d{2}
月份01-09、或 10、11、12
(0[1-9] | 1[0-2])
日01-09、10-19、21-29 、30、31
( 0[1-9] | [12] \\d | 3[01] )
后四位前三位任意、最后一位可以是数字、X、x
\\d{3} [\\dXx] 最后拼接起来即可 正则表达式 小结 正则表达式重要的是看得懂 AnyRule 插件 本章介绍了正则表达式以及规则、校验字符串是否满足规则的重要作用。
下篇介绍第二个重要作用在一段文本中查找满足要求的内容