正則表達式語法解析 轉

-、"^"頭匹配
  ^front表示以"front"開頭的字符串。
二、"$"尾匹配
  tail$表示以"tail"結尾的字符串。
三、轉義序列
  所有轉義序列都用"/"打頭。如"^"、"$"、"+"、"("、")"在表達式中都有特殊意義,所以在正則表達式中也用"/^"、"/$"、"/+"、"/("、"/)"來表示。
四、字符簇
   [a-z]匹配小寫字符;[A-Z]匹配寫字符;[a-zA-Z]匹配所有字符;[0-9]匹配所有數字;[/./-/+]匹配所有句號,減號和加號; [^a-z]除了小寫字母以外的成有字符;^[^a-z]第一個字符不能是小寫字母;[^0-9]除了數字以外的所有字符;
五、重複
  ^a{4}$表示aaaa;^a{2,4}表示aa,aaa或aaaa;^a{2,}表示多於兩個a的字符串;.{2}表示所有的兩個字符;

下面舉兩個常用例子說明:

 

1、Email的驗證
  要求:
  (1)必須包含一個"@"
  (2)在"@"後面的字符串至少包含一個"."號
  (3)"@"前面和後面的字符串由一個或一個以上字母、數字、下劃線或減號構成
  根據這幾條規則,可以與出以下正則表達式:
  ^[a-zA-Z0-9_/-]{1,}@[a-zA-Z0-9_/-]{1,}/.[a-zA-Z0-9_/-.]{1,}$
或者:
  /w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*

 

2、電話號碼的驗證
  要求:
  (1)電話號碼由數字、"("、")"和"-"構成
  (2)電話號碼爲3到8位
  (3)如果電話號碼中包含有區號,那麼區號爲三位或四位
  (4)區號用"("、")"或"-"和其他部分隔開
  (5)移動電話號碼爲11或12位,如果爲12位,那麼第一位爲0
  (6)11位移動電話號碼的第一位和第二位爲"13"
  (7)12位移動電話號碼的第二位和第三位爲"13"
  根據這幾條規則,可以與出以下正則表達式:
  (^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)
 
 
 
 ------------------------------------
日期
20/d{2}(-)((0[1-9])|(1[0-2]))(-)((0[1-9])|([1-2][0-9])|(3[0-1]))(T|/s)(([0-1][0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9])

格式2004-05-06 14:00:00
([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})

--------------------------
數字,字母,下劃線
^[0-9a-zA-Z_]*$
^[a-zA-Z0-9]*$
---------------------
只能輸入2~10個漢字
^[/u4e00-/u9fa5]{2,10}$
————————————————————————
一個正則表達式就是由普通字符(例如字符 a 到 z)以及特殊字符(稱爲元字符)組成的文字模式。該模式描述在查找文字主體時待匹配的一個或多個字符串。正則表達式作爲一個模板,將某個字符模式與所搜索的字符串進行匹配。

這裏有一些可能會遇到的正則表達式示例:

JScript VBScript 匹配
/^/[ /t]*$/ "^/[ /t]*$" 匹配一個空白行。
//d{2}-/d{5}/ "/d{2}-/d{5}" 驗證一個ID 號碼是否由一個2位數字,一個連字符以及一個5位數字組成。
/<(.*)>.*<///1>/ "<(.*)>.*<///1>" 匹配一個 HTML 標記。


下表是元字符及其在正則表達式上下文中的行爲的一個完整列表:

字符 描述
/ 將下一個字符標記爲一個特殊字符、或一個原義字符、或一個 後向引用、或一個八進制轉義符。例如,'n' 匹配字符 "n"。'/n' 匹配一個換行符。序列 '//' 匹配 "/" 而 "/(" 則匹配 "("。
^ 匹配輸入字符串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '/n' 或 '/r' 之後的位置。
$ 匹配輸入字符串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '/n' 或 '/r' 之前的位置。
* 匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等價於{0,}。
+ 匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。
? 匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價於 {0,1}。
{n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
{n,} n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=85720

 
發佈了7 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章