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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tonygone 中级黑马   /  2013-7-17 11:40  /  1803 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 tonygone 于 2013-7-18 08:13 编辑

昨天做基础测试时遇到的问题:
写一个正则表达式,可以匹配尾号5连的手机号。规则: 第1位是1,第二位可以是数字3458其中之一,后面4位任意数字,最后5位为任意相同的数字。

我的答案是  ^1[3458]\d{4}(0{5}|1{5}|2{5}|3{5}|4{5}|5{5}|6{5}|7{5}|8{5}|9{5})$
  1.         /**  
  2.      * 验证手机号码  
  3.      * @param mobiles  
  4.      * @return  
  5.      */  
  6.     public static boolean isMobileNO(String mobiles){  
  7.      boolean flag = false;  
  8.      try{  
  9.       Pattern p = Pattern.compile("^1[3458]\\d{4}(0{5}|1{5}|2{5}|3{5}|4{5}|5{5}|6{5}|7{5}|8{5}|9{5})[        DISCUZ_CODE_0        ]quot;);
  10.       Matcher m = p.matcher(mobiles);  
  11.       flag = m.matches();  
  12.      }catch(Exception e){  
  13.       flag = false;  
  14.      }  
  15.      return flag;  
  16.     }  
复制代码
感觉自己写的正则表达式关于重复数字的部分有点麻烦,求大神指导简单的办法。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 xscn 于 2013-7-17 21:34 编辑

你忘了正则表达式怎么取叠词了?简化如下
^1[3458]\d{4}([\d])\1{4}$
当然写代码的时候注意下反斜杠要写2个,我替换了你的程序测试了一下没有问题

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
"1[3458]\\d{4}(\\d)\\1{4}"
回复 使用道具 举报
\\1{4}叠词替换后面的一段(0{5}|1{5}|2{5}|3{5}|4{5}|5{5}|6{5}|7{5}|8{5}|9{5})$
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马