sun终于在sdk正式支持正则表达的判定--Java1.4的util里增加了个regex包。
(正则的咚咚,Unix用户都应该比较熟悉。)
大家不用到处找第三方的库或是自己写字符串的判定逻辑了。真算是我们的福音。
只需要将注重力放在业务规则上就可以了。复用和正确性都会有很大的提高,逻辑也简单易懂,轻易维护。
在日常的字符串操作方面,会带来很大的方便,比如判定电子邮件地址,电话号码,身份证号码,文字过滤等等。
下面我做了一个简单的邮件地址格式判定的测试(可以在main中直接运行打印),大家可以先了解一下:
/*自定义电子邮件地址的商业逻辑--3到16字符长的用户名,后接@符号,再是用点分隔的域名。
下面的mailstr正则表达式里面的\w是预定义的,等于[a-zA-Z_0-9]。还有很多,在后面的表达式说明中有说明,意思是这是一个可以为数字和大小写字母以及下划线的字符。[x]表示一个字符,但[]里面可以加多个字符,他们之间是或关系。{}是个数量的界定,这里{3,16}表示至少3个,最多16个,+,*都是表示重复任意次数,但是+表示至少一次,()用于多个字符的分组。*/
String mailstr = "(\\w[.-]){3,16}@((\\w-)+.)*(\\w)+" ;
//新旧身份证号的表达式(没有作日期有效性的检查)
String idstr ="(\\d){15}(\\d){18}(\\d){17}[xX]";
String mstr = "qiaohua2000@pa18.com";
Pattern pn = Pattern.compile( mailstr ) ;
boolean b = pn.matcher( mstr ).matches() ;
System.out.println("regular:"+mailstr);
System.out.println("matcher:"+mstr) ;
System.out.println("result:"+b) ;
大家可以试试不同的输入组合,看看是否符合逻辑?
具体用法参见下面网址的
Summary of regular-eXPression constrUCts Construct Matches 部分
URL:
http://java.sun.com/j2se/1.4/docs/api/java/util/regex/Pattern.Html