前几天在做一道数字匹配题的时候,题目是这样的:写一个正则表达式,可以匹配尾号5连的手机号。规则: 第1位是1,第二位可以是数字3458其中之一, 后面4位任意数字,最后5位为任意相同的数字。我当时立马去学习正则表达式,不过我看了半天都没有找到合适的方法,最后使用循环语句完成,代码如下:- package com.itheima;
- import java.util.regex.Pattern;
- public class TestPattern {
-
- public static void main(String[] args) {
-
- boolean n = false ;
-
- //运行时输入一个电话号码
- String s = args[0];
-
- //创建一个字符数组,长度为10
- String[] sx = new String[10];
-
- //以正则表达式对该数组依次赋值
- for(int i=0;i<10;i++){
-
- sx[i] = "1[3458]\\d{4}"+i+"{5}";
- }
-
- //用该号码以此同不同正则表达式比较
- for (int i=0;i<10;i++){
-
- Pattern p = Pattern.compile(sx[i]);
-
- Matcher m = p.matcher(s);
-
- n = m.matches();
-
- if(n == true){
-
- //如果匹配成功则打印匹配成功
- System.out.println("能够匹配");
-
- //匹配成功结束剩下的匹配,否则影戏n的正确赋值
- break;
-
- }
-
- }
- if(n == false){
-
- //初始值n为false,如果没有匹配成功,则不会被改变,打印出无法匹配
- System.out.println("无法匹配");
-
- }
-
- }
- }
复制代码 那位朋友知道怎么样才能更简单的写出这个代码。?谢谢~ |