jdk1.4的正则表达式使用介绍

1/5/2008来源:Java教程人气:6255


  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 = "[email protected]";
   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