黑马程序员技术交流社区

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

作者: 曹强    时间: 2014-5-30 21:30
标题: 正则表达式
题目是:写一个正则表达式,可以匹配尾号5连的手机号。规则: 第1位是1,第二位可以是数字3458其中之一,后面4位任意数字,最后5位为任意相同的数字。
正则表达式是什么啊(最好能举个例子老师讲的里面好像没有啊)还希望大神给解下
作者: 呀嘛咕    时间: 2014-5-30 22:27
哈哈,和我的题目一样的。这个简单哎
作者: 呀嘛咕    时间: 2014-5-30 22:30
呀嘛咕 发表于 2014-5-30 22:27
哈哈,和我的题目一样的。这个简单哎

小伙伴 给你咯

String res = "[1][3458][0-9]{4}([0-9])\\1{4}";       
作者: 北极£莜蓝    时间: 2014-5-30 22:45
菜鸟过来学习下
作者: lin'    时间: 2014-5-30 23:07
/^1[3458]\d{4}(\d){5}$/这应该是最标准的吧,试试吧,希望能帮到你
作者: 为了心中的梦    时间: 2014-5-30 23:51
同学习.................
作者: 饥渴ing    时间: 2014-5-31 00:48
正则还没看,过来学习下
作者: 曹强    时间: 2014-5-31 10:08
呀嘛咕 发表于 2014-5-30 22:30
小伙伴 给你咯

String res = "[1][3458][0-9]{4}([0-9])\\1{4}";

话说这个学过吗,我怎么重来没见过,真心的
作者: 曹强    时间: 2014-5-31 10:10
难道就木有大神讲解下,嗨………………

作者: 呀嘛咕    时间: 2014-5-31 10:40
曹强 发表于 2014-5-31 10:10
难道就木有大神讲解下,嗨………………

你没有学过正则吗?
作者: 呀嘛咕    时间: 2014-5-31 10:48
呀嘛咕 发表于 2014-5-31 10:40
你没有学过正则吗?

String res = "[1][3458][0-9]{4}([0-9])\\1{4}";   
我这个很容易理解的
第一位只能为1,所以是[1]
第二位为3458,所以是[3458]
然后4位为数字,任意数字[0-9]当然也可以写成\\d,4位{4}
最后5位为相同数字,所以将第一个数字封装成组([0-9])然后去组\\1然后再出现4位,所以就是([0-9])\\1{4}了

小伙伴 要学会举一反三哦 加油!
作者: 曹强    时间: 2014-5-31 18:30
呀嘛咕 发表于 2014-5-31 10:48
String res = "[1][3458][0-9]{4}([0-9])\\1{4}";   
我这个很容易理解的
第一位只能为1,所以是[1]

谢谢,不过老师的视频里真的有吗,我是真心没见过,我是零基础开始学的
作者: 宁致远    时间: 2014-6-1 09:16
正则表达式是符合一定规则的字符串表达式。有特殊应用场景。常用来字符串匹配,比如:手机号码,QQ号码,用例//手机号是否正确                 String tel="13069700000";//要匹配的手机号                 String regex="1[3458][0-9]{4}([0-9])\\1{4}";                 boolean b=tel.matches(regex);                 System.out.println(b);
作者: 韩天雷    时间: 2014-6-1 09:41
正则表达式http://www.jb51.net/tools/zhengze.html

作者: KevinSmart    时间: 2014-6-1 20:01
public static void main(String[] args) {
                // 定义号码规则
                String regex = "[1][3458]\\d{4}(\\d)\\1{4}";
                // 输入电话号码
                Scanner numIn = new Scanner(System.in);
                System.out.println("请输入电话号码:");
                String str = numIn.next();
                if (str.toCharArray().length == 11) {
                        if (str.matches(regex)) {
                                System.out.println("匹配成功!");
                        } else {
                                System.out.println("匹配错误!");
                        }
                } else {
                        System.out.println("电话号码不正确!");
                }
        }
}
作者: liang090214    时间: 2014-6-1 20:33
学习学习。。。。
作者: 曹强    时间: 2014-6-2 23:17
宁致远 发表于 2014-6-1 09:16
正则表达式是符合一定规则的字符串表达式。有特殊应用场景。常用来字符串匹配,比如:手机号码,QQ号码,用 ...

给力啊

作者: 曹强    时间: 2014-6-2 23:18
KevinSmart 发表于 2014-6-1 20:01
public static void main(String[] args) {
                // 定义号码规则
                String regex = "[1][3458]\\d{4}(\\d)\\1 ...

这个更给力,不过你早点就好了,我都交上去了,拙计的,终于知道我哪扣分了
作者: Autumn    时间: 2014-6-3 08:12
基础有待加强
作者: 喜爱    时间: 2014-6-3 09:49
lin' 发表于 2014-5-30 23:07
/^1[3458]\d{4}(\d){5}$/这应该是最标准的吧,试试吧,希望能帮到你

这个好像最后不能实现5位连续相同的数啊!
作者: 飘渺≮★耘    时间: 2014-6-3 10:13
[1][3458][0-9]{4}(\d)\1{4}
作者: 我是main    时间: 2014-6-3 10:25
突然间 忘了什么是正则表达式 还是没看过
作者: 曹强    时间: 2014-6-5 10:32
我是main 发表于 2014-6-3 10:25
突然间 忘了什么是正则表达式 还是没看过

我所有都看过了,真心没看过
作者: 苏周周    时间: 2014-6-5 12:55
   学习下




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