黑马程序员技术交流社区

标题: Java正则表达式 [打印本页]

作者: troy健    时间: 2014-7-3 11:15
标题: Java正则表达式
本帖最后由 troy健 于 2014-7-3 11:22 编辑

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

则是我自己写的正则表达式
  1. String regex = "1[3458]\\d{4}(\\d)\\1{5}";
复制代码


第一位: 1  不需要匹配
第二位: [3458]  3458中的任意一位
后四位: 任意4位数字     \d{4}  \d代表0-9,{4}代表出现4次
后五位: 5位相同的数字     (\d)\1{5}        \1代表5个数字跟第一个随机出现的数字相同

但是程序运行结果还是错误,请各位指出我是哪里理解错了还是格式错误?



作者: troy健    时间: 2014-7-3 14:05
有人帮忙解决一下吗
作者: 眼镜你别跑    时间: 2014-7-3 16:16
表达式出现错了,我们知道的手机号码是11位的,
第一位:1不需要匹配
  第二位: [3458]  3458中的任意一位,这步也正确
第三呢,前两位已经确定了,那么还有9位数字是这样表达的,[\\d]这个代表什么我就不说了,你懂的    {9}这个是代表前面的出现九次。
所以正确的表达式,是 1[3458][\\d]{9}
作者: troy健    时间: 2014-7-3 16:54
眼镜你别跑 发表于 2014-7-3 16:16
表达式出现错了,我们知道的手机号码是11位的,
第一位:1不需要匹配
  第二位: [3458]  3458中的任意一位 ...

我已经解决了,最后的{5}改成{4}, \d产生0-9的随机数, \1{4} 产生4个和()中第一位相同的四位数字,也就是和\d相同,这样就是5个相同的数字
作者: 眼镜你别跑    时间: 2014-7-3 16:56
这个表达式很简单,你那个我就看不懂了呵呵
作者: Hugoo    时间: 2014-7-5 12:34
14000左右
作者: Hugoo    时间: 2014-7-5 12:37
14000左右
作者: Hugoo    时间: 2014-7-5 12:40
14000左右




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