Java与Android移动应用开发:技术、方法与实践
上QQ阅读APP看书,第一时间看更新

6.4 正则表达式

正则表达式的操作方式是通过模式(pattern)来匹配(match)的,而不是通过字符串的内容进行查询。

正则表达式操作的资源定义在java.util.regex包中,主要的类型包括Pattern和Matcher类。其中,Pattern类定义匹配的模式,Matcher类根据模式进行匹配操作,并根据需要处理匹配的结果。

下面的代码使用简单的模式来匹配手机号码。

可以修改num的内容来观察代码的运行结果。当指定模式时,首先第一个字符必须是1,然后是0~9的数字,{10}?的含义是前一条规则必须有10次,即在1的后面必须有10个数字,这样就保证了从1开始的11位数字规则,也就是手机号码格式。

下面了解一些常用的匹配规则。

首先,如果需要指定某个字符,可以直接定义。对于一些特殊字符,可以使用转义字符进行转义。

[]定义一个字符,可以指定允许的字符范围。如[0-9]表示一位数字,[a-z]表示一个小写字母,[a-zA-Z]表示一个大写或小写字母,[aeiou]表示只是5个字母中的一个。此外,如果不允许某个字符,可以在规则前使用^符号,如[^AB]规则表示不允许出现A或B字符。

单词字符(包括字母、数字和下画线),可以使用\w转义,不允许单词字符时使用\W转义。如[\\w]{6,15}?表示6~15位的单词字符。

下面的代码会判断一个E-mail地址格式是否正确。

在这个规则中,^符号表示必须以[a-zA-Z0-9]中的内容开头,$符号必须以前一条规则作为结束,这是指\\w+内容,即字母、数字和下画线。规则中的+符号表示前一条规则至少应用一次,*符号表示前一规则应用零次或多次。

关于正则表达式,需要在实践中多加练习,逐渐熟悉各种规则,并能够灵活应用,而对于经常使用的格式检查,还可以进行封装。