首页 理论教育 Java中正则表达式的使用

Java中正则表达式的使用

时间:2023-10-18 理论教育 版权反馈
【摘要】:正则表达式涉及元字符和限定符两个概念。正则表达式中常见的元字符见表5-6所示。表5-6 正则表达式中常用的元字符表限定符,是用来限定元字符出现的次数。我们重点来分析一下第5行语句中的正则表达式:0\\d{2,3}[-]?经过分析得出,0317-8888888、03178888888、0218888888、021-8888888、031788888888等都与正则表达式匹配,而03174-999999不匹配。该正则表达式验证以13 或15 开头的手机号码,以13开头的手机号,“[0-9]”代表13后面可以出现0~9中的任意数字,“\\d{8}”代表0~9中的数字出现8次。

Java中正则表达式的使用

正则表达式是一种可以用于模式匹配和替换的规范。一个正则表达式就是由普通的字符(如字符a~z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式涉及元字符和限定符两个概念。

(1)元字符,是指一些具有特殊意义的字符。正则表达式中常见的元字符见表5-6所示。

表5-6 正则表达式中常用的元字符表

(2)限定符,是用来限定元字符出现的次数。正则表达式中常见的限定符见表5-7所示。

表5-7 正则表达式中常用的限定符

【例5-2】 在某些注册页面,经常会要求用户输入手机号,编程实现手机号码的验证。下面,我们通过验证手机号的例题来感受下正则表达式的使用,代码如下:

上述代码的运行结果如下:(www.xing528.com)

第3行代码定义了类Regex Test,第4、5行代码定义了该类的成员变量。第6~23行代码定义了该类的静态方法register。第24~26行代码是主方法,在主方法中调用了register方法。

第7~21行代码是一个while循环语句,第10行代码接收用户从控制台输入的电话号码,第11行代码编译regex变量中存储的正则表达式,第12行代码创建给定输入模式的匹配器,第13行代码得到匹配结果存储到boolean类型的变量flag中,若输入的电话号码phone与正则表达式regex匹配,则匹配结果为true,即flag的值为true,否则为false。第14~18行代码为一条if…else语句,根据匹配结果输出不同的提示语句。第19行代码输出提示语句,第20行代码接收用户从控制台输入的内容,当用户输入“Y”或者“y”时,再次进行下一次循环,否则,循环结束。

我们重点来分析一下第5行语句中的正则表达式:

0\\d{2,3}[-]?\\d{7,8}用来匹配固定电话,固定电话是由区号和号码组成,区号是以0开头的,“\\d”代表0~9的数字,“\\d{2,3}”代表0~9的数字出现2~3次,如沧州的区号是0317,上海的区号是021。“[-]”代表此处的字符是“-”,“[-]?”代表“-”出现0 次或者1 次。“\\d{7,8}”代表0~9 的数字出现7~8 次。经过分析得出,0317-8888888、03178888888、0218888888、021-8888888、031788888888等都与正则表达式匹配,而03174-999999不匹配。

“|”或运算符后面的“13[0-9]\\d{8}|15[1089]\\d{8}”是用来匹配手机号的。

手机号码是11 位数,并且以数字1 开头。该正则表达式验证以13 或15 开头的手机号码,以13开头的手机号,“[0-9]”代表13后面可以出现0~9中的任意数字,“\\d{8}”代表0~9中的数字出现8次。以15 开头的电话号码,“[1089]”代表第3 位数字只能是1、0、8、9中的一个,“\\d{8}”代表0~9 中的数字出现8 次。经过分析,13000000000、13400000000、15000000000、15900000000等都与正则表达式匹配,而15700000000等不匹配。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈