🍬 博主介绍👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
目录
请使用正则表达式完成如下需求
练习题1,需求如下:
练习题2,需求如下:
正则表达式总结
请使用正则表达式完成如下需求
练习题1,需求如下:
请编写正则表达式验证用户输入的手机号码是否满足要求
请编写正则表达式验证用户输入的邮箱号是否满足要求。
请编写正则表达式验证用户输入的电话号码是否满足要求。
package Regex;public class demon4 {public static <string> void main(String[] args) {/*需求请编写正则表达式验证用户输入的手机号码是否满足要求。请编写正则表达式验证用户输入的邮箱号是否满足要求。请编写正则表达式验证用户输入的电话号码是否满足要求。验证手机号码 13112345678 13712345667 13945679027 139456790271验证座机电话号码 020-2324242 02122442 027-42424 0712-3242434验证邮箱号码 3232323@qq.com zhangsan@itcast.cnn dlei0009@163.com dlei0009@pci.com.cn*///心得://拿着一个正确的数据,从左到右依次去写。//13112345678//分成三部分://第一部分:1 表示手机号码只能以1开头//第二部分:[3-9] 表示手机号码第二位只能是3-9之间的//第三部分:\\d{9} 表示任意数字可以出现9次,也只能出现9次String regex1 = "1[3-9]\\d{9}";System.out.println("13112345678".matches(regex1));System.out.println("13712345667".matches(regex1));System.out.println("-------------------------------------------------------");//座机电话号码//020-2324242 02122442 027-42424 0712-3242434//思路://在书写座机号正则的时候需要把正确的数据分为三部分//一:区号0\\d{2,3}// 0:表示区号一定是以0开头的// \\d{2,3}:表示区号从第二位开始可以是任意的数字,可以出现2到3次。//二:- ?表示次数,0次或一次//三:号码 号码的第一位也不能以0开头,从第二位开始可以是任意的数字,号码的总长度:5-10位String regex2 = "0\\d{2,3}-?[1,9]\\d{4,9}";System.out.println("020-2324242".matches(regex2));System.out.println("0712-3242434".matches(regex2));System.out.println("02122442".matches(regex2));System.out.println("------------------------------------------------");//邮箱号码//3232323@qq.com zhangsan@itcast.cnn dlei0009@163.com dlei0009@pci.com.cn//思路://在书写邮箱号码正则的时候需要把正确的数据分为三部分//第一部分:@的左边 \\w+// 任意的字母数字下划线,至少出现一次就可以了//第二部分:@ 只能出现一次//第三部分:// 3.1 .的左边[\\w&&[^_]]{2,6}// 任意的字母加数字,总共出现2-6次(此时不能出现下划线)// 3.2 . \\.// 3.3 大写字母,小写字母都可以,只能出现2-3次[a-zA-Z]{2,3}// 我们可以把3.2和3.3看成一组,这一组可以出现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@itcast.cnn".matches(regex3));System.out.println("dlei0009@pci.com.cn".matches(regex3));System.out.println("--------------------------------------------");//24小时的正则表达式String regex4 = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";System.out.println("23:11:02".matches(regex4));}
}
练习题2,需求如下:
-
请编写正则表达式验证用户名是否满足要求。
要求:大小写字母,数字,下划线一共4-16位
-
请编写正则表达式验证身份证号码是否满足要求。
简单要求:18位,前17位任意数字,最后一位可以是数字可以是大写或小写的x
复杂要求:按照身份证号码的格式严格要求。
练习代码如下:
package Regex;public class demon5 {public static void main(String[] args) {/*正则表达式练习:需求请编写正则表达式验证用户名是否满足要求。要求:大小写字母,数字,下划线一共4-16位请编写正则表达式验证身份证号码是否满足要求。简单要求:18位,前17位任意数字,最后一位可以是数字可以是大写或小写的x复杂要求:按照身份证号码的格式严格要求。身份证号码:41080119930228457x51080119760902230915040119810705387X130133197204039024 I430102197606046442*///用户名要求:大小写字母,数字,下划线一共4-16位String regex1 = "\\w{4,16}";System.out.println("zhangsan".matches(regex1));System.out.println("@qwsd".matches(regex1));System.out.println("zhan_an".matches(regex1));System.out.println("--------------------------------");//身份证号码的简单校验//18位,前17位任意数字,最后一位可以是数字可以是大写或小写的xString regex2 = "[1-9]\\d{16}(\\d|X|x)";System.out.println("41080119930228457x".matches(regex2));System.out.println("510801197609022309".matches(regex2));System.out.println("15040119810705387X".matches(regex2));System.out.println("430102197606046442".matches(regex2));//忽略大小写的书写方式//在匹配的时候忽略abc的大小写String regex3 = "(?i)abc";System.out.println("--------------");System.out.println("ABC".matches(regex3));//trueSystem.out.println("AbC".matches(regex3));//true//身份证号码的严格校验//编写正则的小心得://第一步:按照正确的数据进行拆分//第二步:找每一部分的规律,并编写正则表达式//第三步:把每一部分的正则拼接在一起,就是最终的结果//书写的时候:从左到右去书写。//410801 1993 02 28 457x//前面6位:省份,市区,派出所等信息,第一位不能是0,后面5位是任意数字 [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 20~29 30 31 (0[1-9]|[12]\\d|3[01])//后面四位: 任意数字出现3次 最后一位可以是数字也可以是大写x或者小写x \\d{3}[\\dXx]String regex4 = "[1-9]\\d{5}(18|19|20))\\d{2}(0[1-9]1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]";System.out.println("----------------------------------");System.out.println("41080119930228457x".matches(regex2));System.out.println("510801197609022309".matches(regex2));System.out.println("15040119810705387X".matches(regex2));System.out.println("430102197606046442".matches(regex2));}
}