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

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

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

  1. 当我们注册一个百度账号时,输入的手机号需要满足: 号码以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表示换行,所以 就是换行. 我们需要转义回来,让就表示这个符号,而不是转义符,就用\来表示.

所以,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. 判断一个邮箱地址是否合法:

输出的结果是:true true

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

注:图片截自菜鸟教程

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

经验分享 程序员 微信小程序 职场和发展