/*写一个正则表达式,可以匹配尾号5连的手机号。
规则: 第1位是1,第二位可以是数字3458其中之一,后面4位任意数字,最后5位为任意相同的数字。
例如:18601088888、13912366666
*/
代码如下:
- //import java.util.*;
- class RegexDemo {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入一个11位手机号码:");
- String str = sc.nextLine();
- splitString(str);
-
- }
-
- }
- public static void splitString(String str){
- //定义regex的规则
- String regex = "[1][3458]\\d{4}(\\d)\\1{4}";
- //将字符串用regex进行匹配
- boolean flag = str.matches(regex);
- //按返回结果给出提示
- if (flag){
- System.out.println("您输入的手机号符合要求!");
- }else{
- System.out.println("您输入的手机号不符合要求!");
- }
- }
- }
- )
复制代码 下面我详细解释一下这个正则表达式:
[1] //第一个数字是必须是 1
[3458] //第二个数必须是3458中的一数字
\\d{4} //这是一个整体,\\d 的意思是0-9其中的一个数字和[0-9]是同一个含义,{4}总共出现4次
(\\d)\\1{4}//()这个括号代表组的意思;
组的概念是:比如在教室里上课,一排就是一组,放学的时候老师说,第一组留下来扫地,那么第一组的所有人都要留下来,
也就是说这一排的人都要留下来。
(\\d)的意思就是我将\\d看作一个组,但是这个组是有顺序的,顺序按从前往后排
如:(\\d)([0-9])([1])
(\\d)是第一组
([0-9])是第二组
([1])就是第三组
如果是((())())这样的就看有几个做括号,就有几组;第几个左括号就是第几组
\\1 //意思是第一个“\”是转义字符,“\1”就是取第一组的意思
(\\d)\\1{4}\\完整的解释就是先从0-9中任意取一个数字,把这个数字看成一个组,因为只有一个组,所以他就是第一组,取第一组的值再重复出现四次。
如果你把上面这个正则表达式看懂了,恭喜你正则你已经学会了!
|
|