拼搏的人生

拼搏在繁华的都市

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  7 随笔 :: 13 文章 :: 6 评论 :: 0 Trackbacks

在新的JDK中加入了对使用正则表达式的模式匹配的支持。正则表达式是根据文本匹配模式的方法-类似于编译器生成类文件的工作原理。
在正则表达式的上下文中,模式是序列的文本表示方法。例如,我们想知道一个字符序列中是否存在"money"这个词,就可以使用模式money,
因为这是精确表示该字符串的方法。
   我们这样来检验用户输入的是否为一合法的email地址:
Code:
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class TestRegex
{
 public boolean isEmail(String email)
 {
             //指定使用的模式
  Pattern pattern=Pattern.compile
            ("\\p{Digit}+@\\w+\\.\\p{Alpha}{2,3}");
  String[] words=pattern.split(email);
  Matcher matcher=pattern.matcher(email);
  if(matcher.find()&&words.length==0)
    return true;
  else
    return false;
 }
}
来看怎么用它:
Code:
public class Client
{
 public static void main(String[] args)
 {
  TestRegex regex=new TestRegex();
  String s1="DuYang163@gmail.com";
  String s2="feiyang@126.123.com";
  System.out.println(s1+(regex.isEmail(s1)?"是":"不是")+"Email格式!");
  System.out.println(s2+(regex.isEmail(s2)?"是":"不是")+"Email格式!");
 }
}
一些常用的表达式格式:
文字(Literal): 表达式内任何不具有特殊意义的字符都被看做是一个文字,并与自身匹配。
量词(Quantifier): 某些字符或者表达式,他们被用来计算一个文字或分组可以字符列中出现的次数,以便该序列与表达式匹配。
例:
? 表示出现一次或根本不出现。
* 表示出现零次或一次以上(含一次)。
+ 表示出现一次或多次。
字符类(Character class): 一个字符类就是方括号内的一个字符集,其中,匹配可以是括号内的任意一个字符。可以把字符和量词结合起来,例如,[acegikmoqsuwy*]
                        将是只包含字母表中奇数字母的任意字符列。某些字符列是预先定义好的:
\d-数字(0到9)
\D-非数字
\s-空白字符,如制表符或换行符
\S-非空白字符
\w-单字符(a到z,A到Z,0到9以及下划线)
\W-非单字字符(其他任意字符)
Posix 字符类(Posix character class): 某些字符仅在用于US-ASCII比较时才有效。
例如:
\p{Lower}-小写字符
\p{Upper}-大写字符
\p{ASCII}-所有ASCII字符
\p{Alpha}-字符字符(\p{Lower}与\p{Upper}相结合)
\p{Digit}-从0到9的数字
\p{Alnum}-字母数字字符
范围(Range): 使用短线(dash)来指定范围。例如:[A-J]表示从A到J的大写字母。
否定(Negation): 使用脱字符^表示否定字符。例如:[^A-K]表示除A到K之外的任何字符。

posted on 2006-05-05 08:04 Dalston.Young 阅读(228) 评论(1)  编辑  收藏 所属分类: Java Core

评论

# re: 正则表达式小谈 2006-06-23 04:59 sdfsdaf@##
@#@#@#@#@###  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: