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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© troy健 中级黑马   /  2014-7-3 11:15  /  1494 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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个数字跟第一个随机出现的数字相同

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


7 个回复

正序浏览
14000左右
回复 使用道具 举报
14000左右
回复 使用道具 举报
14000左右
回复 使用道具 举报
这个表达式很简单,你那个我就看不懂了呵呵
回复 使用道具 举报
眼镜你别跑 发表于 2014-7-3 16:16
表达式出现错了,我们知道的手机号码是11位的,
第一位:1不需要匹配
  第二位: [3458]  3458中的任意一位 ...

我已经解决了,最后的{5}改成{4}, \d产生0-9的随机数, \1{4} 产生4个和()中第一位相同的四位数字,也就是和\d相同,这样就是5个相同的数字
回复 使用道具 举报
表达式出现错了,我们知道的手机号码是11位的,
第一位:1不需要匹配
  第二位: [3458]  3458中的任意一位,这步也正确
第三呢,前两位已经确定了,那么还有9位数字是这样表达的,[\\d]这个代表什么我就不说了,你懂的    {9}这个是代表前面的出现九次。
所以正确的表达式,是 1[3458][\\d]{9}
回复 使用道具 举报
有人帮忙解决一下吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马