posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          正則表達(dá)式(本人常用)

          Posted on 2009-05-08 13:55 Gavin.lee 閱讀(308) 評(píng)論(0)  編輯  收藏 所屬分類: java SE & EE
          基礎(chǔ)(摘)
            

          \\  反斜杠
          \t  間隔 ('\u0009')
          \n  換行 ('\u000A')
          \r  回車 ('\u000D')
          \d  數(shù)字 等價(jià)于[0-9]
          \D  非數(shù)字 等價(jià)于[^0-9]
          \s  空白符號(hào) [\t\n\x0B\f\r]
          \S  非空白符號(hào)[^\t\n\x0B\f\r]
          \w  單獨(dú)字符[a-zA-Z_0-9]
          \W  非單獨(dú)字符 [^a-zA-Z_0-9]
          \f  換頁(yè)符
          \e  Escape
          \b  一個(gè)單詞的邊界
          \B  一個(gè)非單詞的邊界
          \G  前一個(gè)匹配的結(jié)束
          /***************************************************/

          ^為限制開頭
          ^java  條件限制為以Java為開頭字符
          /***************************************************/

          $為限制結(jié)尾
          java$  條件限制為以java為結(jié)尾字符
          /***************************************************/

          .條件限制除\n以外任意一個(gè)單獨(dú)字符
          java..  條件限制為java后除換行外任意兩個(gè)字符

          /***************************************************/

          加入特定限制條件「[]」
          [a-z]  條件限制在小寫a to z范圍中一個(gè)字符
          [A-Z]  條件限制在大寫A to Z范圍中一個(gè)字符
          [a-zA-Z] 條件限制在小寫a to z或大寫A to Z范圍中一個(gè)字符
          [0-9]  條件限制在小寫0 to 9范圍中一個(gè)字符
          [0-9a-z] 條件限制在小寫0 to 9或a to z范圍中一個(gè)字符
          [0-9[a-z]] 條件限制在小寫0 to 9或a to z范圍中一個(gè)字符(交集)
          /***************************************************/

          []中加入^后加再次限制條件[^]
          [^a-z]  條件限制在非小寫a to z范圍中一個(gè)字符
          [^A-Z]  條件限制在非大寫A to Z范圍中一個(gè)字符
          [^a-zA-Z] 條件限制在非小寫a to z或大寫A to Z范圍中一個(gè)字符
          [^0-9]  條件限制在非小寫0 to 9范圍中一個(gè)字符
          [^0-9a-z] 條件限制在非小寫0 to 9或a to z范圍中一個(gè)字符
          [^0-9[a-z]] 條件限制在非小寫0 to 9或a to z范圍中一個(gè)字符(交集)
          /***************************************************/

          在限制條件為特定字符出現(xiàn)0次以上時(shí),可以使用「*」
          J*  0個(gè)以上J
          .*  0個(gè)以上任意字符
          J.*D  J與D之間0個(gè)以上任意字符
          /***************************************************/

          在限制條件為特定字符出現(xiàn)1次以上時(shí),可以使用「+」
          J+  1個(gè)以上J
          .+  1個(gè)以上任意字符
          J.+D  J與D之間1個(gè)以上任意字符
          /***************************************************/

          在限制條件為特定字符出現(xiàn)有0或1次以上時(shí),可以使用「?」
          JA?  J或者JA出現(xiàn)
          /***************************************************/

          限制為連續(xù)出現(xiàn)指定次數(shù)字符「{a}」
          J{2}  JJ
          J{3}  JJJ
          /***************************************************/

          文字a個(gè)以上,并且「{a,}」
          J{3,}  JJJ,JJJJ,JJJJJ,???(3次以上J并存)
          文字個(gè)以上,b個(gè)以下「{a,b}」
          J{3,5}  JJJ或JJJJ或JJJJJ
          /***************************************************/
          兩者取一「|」
          J|A  J或A
          Java|Hello Java或Hello



           
          「()」中規(guī)定一個(gè)組合類型
          比如,我查詢<a href=\"index.html\">index</a>中<a href></a>間的數(shù)據(jù),可寫作<a.*href=\".*\">(.+?)</a>

          在使用Pattern.compile函數(shù)時(shí),可以加入控制正則表達(dá)式的匹配行為的參數(shù):
          Pattern Pattern.compile(String regex, int flag)

          flag的取值范圍如下:
          Pattern.CANON_EQ     當(dāng)且僅當(dāng)兩個(gè)字符的"正規(guī)分解(canonical decomposition)"都完全相同的情況下,才認(rèn)定匹配。比如用了這個(gè)標(biāo)志之后,表達(dá)式"a\u030A"會(huì)匹配"?"。默認(rèn)情況下,不考慮"規(guī) 范相等性(canonical equivalence)"。
          Pattern.CASE_INSENSITIVE(?i)     默認(rèn)情況下,大小寫不明感的匹配只適用于US-ASCII字符集。這個(gè)標(biāo)志能讓表達(dá)式忽略大小寫進(jìn)行匹配。要想對(duì)Unicode字符進(jìn)行大小不明感的匹 配,只要將UNICODE_CASE與這個(gè)標(biāo)志合起來(lái)就行了。
          Pattern.COMMENTS(?x)     在這種模式下,匹配時(shí)會(huì)忽略(正則表達(dá)式里的)空格字符(譯者注:不是指表達(dá)式里的"\\s",而是指表達(dá)式里的空格,tab,回車之類)。注釋從#開始,一直到這行結(jié)束??梢酝ㄟ^(guò)嵌入式的標(biāo)志來(lái)啟用Unix行模式。
          Pattern.DOTALL(?s)     在這種模式下,表達(dá)式'.'可以匹配任意字符,包括表示一行的結(jié)束符。默認(rèn)情況下,表達(dá)式'.'不匹配行的結(jié)束符。
          Pattern.MULTILINE
          (?m)     在這種模式下,'^'和'$'分別匹配一行的開始和結(jié)束。此外,'^'仍然匹配字符串的開始,'$'也匹配字符串的結(jié)束。默認(rèn)情況下,這兩個(gè)表達(dá)式僅僅匹配字符串的開始和結(jié)束。
          Pattern.UNICODE_CASE
          (?u)     在這個(gè)模式下,如果你還啟用了CASE_INSENSITIVE標(biāo)志,那么它會(huì)對(duì)Unicode字符進(jìn)行大小寫不明感的匹配。默認(rèn)情況下,大小寫不敏感的匹配只適用于US-ASCII字符集。
          Pattern.UNIX_LINES(?d)     在這個(gè)模式下,只有'\n'才被認(rèn)作一行的中止,并且與'.','^',以及'$'進(jìn)行匹配

           

          package com.yixun.wap;

          import java.util.regex.Matcher;
          import java.util.regex.Pattern;

          import com.Gavin.tools.util.WriteLog;
          /** *//**
           * 
           * @descripte check format
           * 
          @author Gavin.lee
           * @date 2009-5-20下午06:37:49
           * 
          @version 1.0
           *
           
          */

          public class CheckFormat {

              
          //驗(yàn)證郵箱
              
              
          public static boolean checkMail(String str) {
                  Pattern pattern 
          = Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE);
                  Matcher matcher 
          = pattern.matcher(str);
                  
          return matcher.matches();
              }

          //驗(yàn)證中文,不能驗(yàn)證中文標(biāo)點(diǎn)
              public static boolean checkChinese(String str) {
                  Pattern pattern 
          = Pattern.compile("[\u4e00-\u9fa5]+$"); 
                  Matcher match 
          = pattern.matcher(str); 
                  
          return match.matches();
              }

          //雙字節(jié)(包括中文)
              public static boolean checkDoubleByte(String str) {
                  Pattern pattern 
          = Pattern.compile("[^\\x00-\\xff]+$");
                  Matcher match 
          = pattern.matcher(str); 
                  
          return match.matches();
              }
              

          //驗(yàn)證英文、數(shù)字、下劃線的組合  5-16位
              public static boolean checkENU(String str) {
                  Pattern pattern 
          = Pattern.compile("[a-zA-Z0-9_]{4,15}$+$");  //^\w+$
                  Matcher match = pattern.matcher(str);
                  
          return match.matches();
              }

          //驗(yàn)證英文、數(shù)字的組合
              public static boolean checkEAN(String str) {
                  Pattern pattern 
          = Pattern.compile("[a-zA-Z0-9]+$");
                  Matcher match 
          = pattern.matcher(str);
                  
          return match.matches();
              }

          //只英文
              public static boolean checkEnglish(String str) {
                  Pattern pattern 
          = Pattern.compile("[a-zA-Z]+$");
                  Matcher match 
          = pattern.matcher(str);
                  
          return match.matches();
              }

          //只數(shù)字  
              public static boolean checkNumber(String str) {
                  Pattern pattern 
          = Pattern.compile("[0-9]+$");        //[^0-9]   非數(shù)字
                  Matcher match = pattern.matcher(str);
                  
          return match.matches();
              }

          /**//*
           * 大于1 浮點(diǎn)數(shù)、整數(shù)
           * 01.99    false
           * 0.99        false
           * 1.        false
           * 1.0        true
           * 1.00        true
           * 
           
          */

              
          public static boolean checkFloat(String str) {
                  Pattern pattern 
          = Pattern.compile("[^0][0-9]*.{0,1}[0-9]{0,2}+$");        //[^0-9]   非數(shù)字
                  Matcher match = pattern.matcher(str);
                  
          if(str.indexOf("."== 0{
                      
          return false;
                  }
           else if (str.indexOf("."== (str.length()-1)) {
                      
          return false;
                  }

                  
                  
          return match.matches();
              }

          //身份證驗(yàn)證   \d{15}|\d{18}
              public static boolean checkIdentityCard(String str) {
                  Pattern pattern 
          = Pattern.compile("\\d{15}|\\d{18}+$");        
                  Matcher match 
          = pattern.matcher(str);
                  
          return match.matches();
              }


          //IP地址    \d+\.\d+\.\d+\.\d+
              public static boolean checkIP(String str) {
                  Pattern pattern 
          = Pattern.compile("\\d+\\.\\d+\\.\\d+\\.\\d++$");        
                  Matcher match 
          = pattern.matcher(str);
                  
          return match.matches();
              }

              
          //國(guó)內(nèi)固話    \d{3}-\d{8}|\d{4}-\d{7}
              public static boolean checkPhoneNum(String str) {
                  Pattern pattern 
          = Pattern.compile("\\d{3}-\\d{8}|\\d{4}-\\d{7}+$");
                  Matcher match 
          = pattern.matcher(str);
                  
          return match.matches();
              }

          //QQ驗(yàn)證 10000開始    [1-9][0-9]{4,}
              public static boolean checkQQ(String str) {
                  Pattern pattern 
          = Pattern.compile("[1-9][0-9]{4,}+$");        
                  Matcher match 
          = pattern.matcher(str);
                  
          return match.matches();
              }

          //URL判定  http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?
              public static boolean checkURL(String str) {        
                  Pattern pattern 
          = Pattern.compile("http://([\\w-]+\\.)+[\\w-]+([\\w-.?%&=]*)?+$");        
                  Matcher match 
          = pattern.matcher(str);
                  
          return match.matches();
              }


              
          public static void main(String args[]) {
          //        System.out.println(CheckFormat.checkMail("doingjava@126.com"));
          //        System.out.println(CheckFormat.checkChinese("易訊天空"));
          //        System.out.println(CheckFormat.checkDoubleByte("易訊天空")); 
          //        System.out.println(CheckFormat.checkENU("doing_java126")); 
          //        System.out.println(CheckFormat.checkEAN("500wan"));
          //        System.out.println(CheckFormat.checkEnglish("wan"));
          //        System.out.println(CheckFormat.checkNumber("500"));
          //        System.out.println(CheckFormat.checkIdentityCard("342401198606038578"));
          //        System.out.println(CheckFormat.checkIP("192.168.9.17"));
          //        System.out.println(CheckFormat.checkPhoneNum("0564-2649344"));
          //        System.out.println(CheckFormat.checkQQ("496508302"));
          //        System.out.println(CheckFormat.checkURL("http://wap.500wan.com.cn?id=1&name=gavin"));
          //        WriteLog.writeLog("CheckFormat", "context");
                  System.out.println(CheckFormat.checkFloat("1.00"));
          //        System.out.println((".99").indexOf(".") == 0);
              }

          }


           

           

          主站蜘蛛池模板: 庆元县| 白银市| 绥芬河市| 积石山| 容城县| 托克托县| 南陵县| 碌曲县| 凭祥市| 乌鲁木齐县| 宜兴市| 波密县| 临漳县| 石台县| 海原县| 长宁区| 灌云县| 罗田县| 桓仁| 关岭| 孟连| 灵武市| 贡嘎县| 格尔木市| 曲麻莱县| 简阳市| 白水县| 南郑县| 渝北区| 武鸣县| 灵川县| 宜黄县| 阿拉善右旗| 冷水江市| 海口市| 宁蒗| 巴彦淖尔市| 武邑县| 湘潭市| 宕昌县| 洛阳市|