常用正则表达式
一只纯菜鸟的角度.... 在用schema规范xml时,有些约束要用到正则表达式,我却写不出来。作为一个有节操的程序猿,这是难以忍受的。所以我这里总结下正则表达式。查阅的是08年的文档,步骤应该算是比较,但不知道是不是过时了,哪位大侠知道更好的办法欢迎指教哈。在JDK1.6的帮助文档中查询patter类,摘抄一小段内容(其实API正的很好用)如下: Patter类指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。 因此,典型的调用顺序是 Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); 在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句 boolean b = Pattern.matches("a*b","aaaaab"); 等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。 此类的实例是不可变的,可供多个并发线程安全使用。Matcher类的实例用于此目的则不安全。 ------------------------------------------------ 以上摘抄的内容何解呢?上面的三个步骤构成一个完整的匹配正则表达式的过程,可以多个供多个并发线程安全使用。而你只简单的写一句boolean b = Pattern.matches("a*b","aaaaab"); 的话,在多线程并发时会出现不安全的问题。不懂........
正则表达式的强大我就不废话,开始实例吧
publicclass TestZhengZe {
publicstaticvoid main(String[] args) { Pattern p=null;//正则表达式 Matcher m=null;//操作的字符串 boolean result=false;//结果 //匹配手机号码 第一位为1,第二位为3或者5,后面9位数 // p=Pattern.compile("^[1][3,5]d{9}"); // m=p.matcher("15200399866"); // result=m.matches(); // if(result){ // System.out.println("输入手机号正确"); // }else{ // System.out.println("输入手机号错误"); // }
//身份证 //p=Pattern.compile("d{15}|d{18}");
//邮箱 // p = Pattern.compile("w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*");
//ip // p =Pattern.compile("d{1,3}+.d{1,3}");
//汉字字符串 //p = Pattern.compile("^[u4e00-u9fa5]+$");
//匹配电话号码0735-2599991或010-87654673 区号固定,号码是7位或者8位 p=Pattern.compile("0735-d{7,8}|010-d{7,8}"); m=p.matcher("010-2599991"); if(m.matches()){ System.out.println("OK"); }else{ System.out.println("xxxx"); } } }
还有些字符串的匹配,待续 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |