A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ██ 中级黑马   /  2014-6-11 00:29  /  1130 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

写一个正则表达式,可以匹配尾号5连的手机号。规则: 第1位是1,第二位可以是数字3458其中之一,
后面4位任意数字,最后5位为任意相同的数字。

请问大神们,这个题怎么做?
正则表达式的每个符号具体是什么意思?

3 个回复

倒序浏览
  1. import java.util.Scanner;

  2. public class Demo2 {

  3.         public static void main(String[] args) {
  4.                 Scanner in=new Scanner(System.in);
  5.                 String str=in.nextLine();
  6.                 String reg="[1][3458][\\d]{4}([0-9])\\1+";
  7.                 boolean b=str.matches(reg);
  8.                 System.out.println(b);
  9.         }

  10. }
复制代码
代码这样哦,希望可以帮到你
回复 使用道具 举报
  1. package com.itheima;
  2. /*
  3. *5、 写一个正则表达式,可以匹配尾号5连的手机号。规则: 第1位是1,第二位可以是数字3458其中之一,后面4位任意数字,最后5位为任意相同的数字。

  4. 例如:18601088888、13912366666
  5. */
  6. public class Test5 {
  7.         public static void main(String args[])
  8.         {
  9.                 //获取输入值
  10.                 String mobile="13912366766";
  11.                 //把字符串转换成字符数组
  12.                 char[] array=mobile.toCharArray();
  13.                 //数字或者字母判断开关
  14.                 boolean excheng=true;
  15.                 //判断输入的是否全为数字
  16.                 for(int i=0;i<=array.length-1;i++)
  17.                 {
  18.                         switch(array[i])
  19.                         {
  20.                         case '0':
  21.                                 break;
  22.                         case '1':
  23.                                 break;
  24.                         case '2':
  25.                                 break;
  26.                         case '3':
  27.                                 break;
  28.                         case '4':
  29.                                 break;
  30.                         case '5':
  31.                                 break;
  32.                         case '6':
  33.                                 break;
  34.                         case '7':
  35.                                 break;
  36.                         case '8':
  37.                                 break;
  38.                         case '9':
  39.                                 break;
  40.                         default:
  41.                                 System.out.println("请输入数字");
  42.                                 excheng=false;
  43.                         }
  44.                 }
  45.                 //判断是否有11位
  46.                 if(mobile.length()==11&&excheng==true)
  47.                 {
  48.                         //判断第一位是否为1
  49.                         if(array[0]=='1')
  50.                         {
  51.                                 //取出第二位值,并判断是否为3458中的其中一个
  52.                                 int secondly=array[1];
  53.                                 switch(secondly)
  54.                                 {
  55.                                 case '3':
  56.                                         //判断后五位是否相等
  57.                                         Five(array);
  58.                                         break;
  59.                                 case '4':
  60.                                         Five(array);
  61.                                         break;
  62.                                 case '5':
  63.                                         Five(array);
  64.                                         break;
  65.                                 case '8':
  66.                                         Five(array);
  67.                                         break;
  68.                                 default:
  69.                                 System.out.print("输入有误3");               
  70.                                 }
  71.                         }else
  72.                         {
  73.                                 System.out.println("输人错误2");
  74.                         }
  75.                        
  76.                 }else
  77.                 {
  78.                         System.out.println("输人错误1");
  79.                 }
  80.         }
  81.         public static void Five(char[] array)
  82.         {
  83.                 //判断开关
  84.                 boolean excheng=true;
  85.                 //取出后五位进行比较
  86.                 for(int i=array.length-1;i>=array.length-5;i--)
  87.                 {
  88.                         if(array[array.length-1]!=array[i])
  89.                         {
  90.                                 System.out.println("这不是尾号5连的手机");
  91.                                 excheng=false;
  92.                                 //continue;//结束当次循环
  93.                                 //结束循环
  94.                                 break;
  95.                         }
  96.                 }
  97.                 //当excheng==true时自行
  98.                 if(excheng)
  99.                 {
  100.                         System.out.println("这是尾号5连的手机");
  101.                 }
  102.         }
  103. }
复制代码
回复 使用道具 举报
楼上老兄用字符串也很好。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马