一篇讲明白程序员必须会的-正则表达式

一篇讲明白程序员必须会的-正则表达式,第1张

一篇讲明白程序员必须会的-正则表达式

正则表达式常用于注册和登录时账号和密码的验证,举一个简单的例子就懂了.

java中正则表达式常常在String类中的matches()方法中使用,其实就是一个匹配的过程:

    当我们注册一个百度账号时,输入的手机号需要满足:

      号码以1开头

      第二位为3,4,5,6,7,8,9

      号码为11位

如图:

当我们的输入不合法时会报错.输入是否合法就是用正则表达式来判断(匹配)的 .

String s = "13723455678";
boolean res = s.matches("1[3456789]\d{9}");
System.out.println(res);

输出的结果是;true

解释其中的含义:用String类 . 里面的方法matches(); 这个方法的参数是String类型,所以输入参数时需要加" ",里面的内容1就表示字符串的第一位是1,没有特殊含义,[3456789]表示1后面的一位可能的取值为;3,4,5,6,7,8,9中的一位,也可以写成[3-9],那如果这这一位的值是3或6或9,应该怎么改?答案是[369]; 如果是6或7或8怎么改?答案是:[678]或[6-8].问一个问题,什么情况下可以写成[i-j]?(评论区见)

接下来的\d很有意思,在正则表达式的规则里d表示的是整数,那我们为什么要用\呢? 在java中表示转义的意思,是一个转义符,如n,加了,此时的n表示换行,所以n就是换行. 我们需要转义回来,让就表示这个符号,而不是转义符,就用\来表示.

所以,java里\d就表示正则表达式d ,表示的是匹配一个0-9的数字,即\d==[0-9],上面的代码中\d{9}是一个整体,表示匹配9个0-9的数字 , 再问一个问题:如果匹配6个0-9的数字呢?当然是\d{6} .

总之,在从前到后的匹配的过程中 : 1. 单个的数字在正则表达式中不具有什么特定的含义,就表示匹配这个数字; 2. [i-j]表示匹配一个从i到j的数字; 3. \d表示匹配一个数字 ; 4.\d{k}表示连续匹配k个从0-9的数字.

    判断一个邮箱地址是否合法:

String s = new String("[email protected]");
String s1 = new String("[email protected]");
boolean res = s.matches("\d{6,12}@qq\.(com|com\.cn)");
boolean res1 = s1.matches("\d{6,12}@qq\.(com|com\.cn)");
System.out.println(s);
System.out.println(s1);

输出的结果是:true true

字符串s匹配时,\d{6,12}表示匹配6到12之间个0-9的数字,@在正则表达式中没有什么表示,直接匹配即可,qq和@同理; . 所有字符都可以匹配, .在正则表达式中匹配的是 . ,和上面的d同理,需要用\. 匹配 . ;后面 | 表示或: 即匹配com或com.cn.

通过以上两个例子读者应该明白了正则表达式的用途,以及一些正则表达式的语法.正则表达式简单来讲就两个字:匹配. 下面附上一些常用的正则表达,读者可自行练习:

 注:图片截自菜鸟教程

如有问题,欢迎各位批评指教~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5712847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存