黑马程序员技术交流社区
标题:
关于正则表达式的问题
[打印本页]
作者:
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})$
/**
* 验证手机号码
* @param mobiles
* @return
*/
public static boolean isMobileNO(String mobiles){
boolean flag = false;
try{
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;);
Matcher m = p.matcher(mobiles);
flag = m.matches();
}catch(Exception e){
flag = false;
}
return flag;
}
复制代码
感觉自己写的正则表达式关于重复数字的部分有点麻烦,求大神指导简单的办法。
作者:
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