黑马程序员技术交流社区
标题:
黑马基础测试题,匹配手机号
[打印本页]
作者:
孟卫严
时间:
2015-7-11 12:56
标题:
黑马基础测试题,匹配手机号
/*写一个正则表达式,可以匹配尾号5连的手机号。
规则: 第1位是1,第二位可以是数字3458其中之一,后面4位任意数字,最后5位为任意相同的数字。
例如:18601088888、13912366666
*/
代码如下:
//import java.util.*;
class RegexDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个11位手机号码:");
String str = sc.nextLine();
splitString(str);
}
}
public static void splitString(String str){
//定义regex的规则
String regex = "[1][3458]\\d{4}(\\d)\\1{4}";
//将字符串用regex进行匹配
boolean flag = str.matches(regex);
//按返回结果给出提示
if (flag){
System.out.println("您输入的手机号符合要求!");
}else{
System.out.println("您输入的手机号不符合要求!");
}
}
}
)
复制代码
下面我详细解释一下这个正则表达式:
[1] //第一个数字是必须是 1
[3458] //第二个数必须是3458中的一数字
\\d{4} //这是一个整体,\\d 的意思是0-9其中的一个数字和[0-9]是同一个含义,{4}总共出现4次
(\\d)\\1{4}//()这个括号代表组的意思;
组的概念是:比如在教室里上课,一排就是一组,放学的时候老师说,第一组留下来扫地,那么第一组的所有人都要留下来,
也就是说这一排的人都要留下来。
(\\d)的意思就是我将\\d看作一个组,但是这个组是有顺序的,顺序按从前往后排
如:(\\d)([0-9])([1])
(\\d)是第一组
([0-9])是第二组
([1])就是第三组
如果是((())())这样的就看有几个做括号,就有几组;第几个左括号就是第几组
\\1 //意思是第一个“\”是转义字符,“\1”就是取第一组的意思
(\\d)\\1{4}\\完整的解释就是先从0-9中任意取一个数字,把这个数字看成一个组,因为只有一个组,所以他就是第一组,取第一组的值再重复出现四次。
如果你把上面这个正则表达式看懂了,恭喜你正则你已经学会了!
作者:
游呤人
时间:
2015-7-11 13:03
正则表达式完全搞不懂
作者:
靳小龙
时间:
2015-9-7 23:59
还好。。。。。
作者:
wyd1
时间:
2015-9-8 00:24
什么意思?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2