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
|