無線&移動互聯網技術研發

          換位思考·····
          posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          正則表達式(本人常用)

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

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

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

          $為限制結尾
          java$  條件限制為以java為結尾字符
          /***************************************************/

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

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

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

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

          在限制條件為特定字符出現0次以上時,可以使用「*」
          J*  0個以上J
          .*  0個以上任意字符
          J.*D  J與D之間0個以上任意字符
          /***************************************************/

          在限制條件為特定字符出現1次以上時,可以使用「+」
          J+  1個以上J
          .+  1個以上任意字符
          J.+D  J與D之間1個以上任意字符
          /***************************************************/

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

          限制為連續出現指定次數字符「{a}」
          J{2}  JJ
          J{3}  JJJ
          /***************************************************/

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



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

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

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

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

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

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

          //驗證英文、數字、下劃線的組合  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();
              }

          //驗證英文、數字的組合
              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();
              }

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

          /**//*
           * 大于1 浮點數、整數
           * 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]   非數字
                  Matcher match = pattern.matcher(str);
                  
          if(str.indexOf("."== 0{
                      
          return false;
                  }
           else if (str.indexOf("."== (str.length()-1)) {
                      
          return false;
                  }

                  
                  
          return match.matches();
              }

          //身份證驗證   \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();
              }

              
          //國內固話    \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驗證 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);
              }

          }


           

           

          主站蜘蛛池模板: 道真| 石城县| 新巴尔虎左旗| 民勤县| 昂仁县| 五河县| 镇巴县| 饶平县| 布尔津县| 当阳市| 青河县| 寻乌县| 越西县| 泸定县| 凤翔县| 简阳市| 青河县| 沙田区| 南皮县| 香港| 景洪市| 宝鸡市| 汨罗市| 威远县| 宝丰县| 顺义区| 北流市| 穆棱市| 甘洛县| 神农架林区| 喀喇沁旗| 屏东市| 龙岩市| 洪雅县| 新干县| 云林县| 伊金霍洛旗| 和静县| 彰化县| 车险| 济阳县|