0
点赞
收藏
分享

微信扫一扫

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

westfallon 2022-01-23 阅读 89

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

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

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

    1. 号码以1开头

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

    3. 号码为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的数字.

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

String s = new String("1932568623@qq.com");
String s1 = new String("190876245@qq.com.cn");
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.

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

 注:图片截自菜鸟教程

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

举报

相关推荐

0 条评论