黑马程序员技术交流社区

标题: 关于正则表达式的问题 [打印本页]

作者: tonygone    时间: 2013-7-17 11:40
标题: 关于正则表达式的问题
本帖最后由 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.     }  
复制代码
感觉自己写的正则表达式关于重复数字的部分有点麻烦,求大神指导简单的办法。
作者: xscn    时间: 2013-7-17 16:28
本帖最后由 xscn 于 2013-7-17 21:34 编辑

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


作者: 下雨天    时间: 2013-7-17 22:30
"1[3458]\\d{4}(\\d)\\1{4}"
作者: 橡皮-leo    时间: 2014-3-10 22:13
\\1{4}叠词替换后面的一段(0{5}|1{5}|2{5}|3{5}|4{5}|5{5}|6{5}|7{5}|8{5}|9{5})$




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2