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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

注释处为什么不能改成String regex = "[1][358]\\d{6}(.)\\1{3}";呢?
需求:(1)定义一个存放手机号码的数字字符串数组{"16210626656","18601066888","13912387666","13156166693","15115888028"}
        (2)利用正则表达式过滤出符合条件的手机号码;规则:第1位是1,第二位可以是数字358其中之一,后面6位任意数字,最后5位为任意相同的数字。
        public static void Test1() {
                String[] s = { "16210626656", "18601066888", "13912387666",
                                "13156166693", "15115888028" ,"13912387667"};
                String regex = "[1][358]\\d{6}(.)\\1+";       //                String regex = "[1][358]\\d{6}(.)\\1{3}";为什么不行呢?      
                int i = 0;
                while (i < s.length) {
                        if (s[i].matches(regex)) {
                                System.out.println(s[i]);
                        }
                        i++;
                }
        }
注释处改成{3} 为什么不行呢 ? 大括号意思不是符合几次吗?

2 个回复

倒序浏览
在定义正则表达式的匹配规则字符串的里面,想再次使用组中的内容,可通过\\1来进行使用   这里改为{3}话  应该是((.)\\1){3}        所以出错
回复 使用道具 举报
本帖最后由 726477179 于 2016-8-14 13:52 编辑
冯潜001 发表于 2016-8-13 22:54
在定义正则表达式的匹配规则字符串的里面,想再次使用组中的内容,可通过\\1来进行使用   这里改为{3}话  ...

哦~原来是这样~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马