1. 程式人生 > >徹底理解正則表達式

徹底理解正則表達式

inf 數量 com 固定 條件 abc image 中括號 font

正則表達式

一、聲明有兩種方式:

  1、內置對象創建, 2、字面量創建

二、正則表達式的組成

  由一些普通字符和元字符組成,普通字符就是字母和數字,元字符是具有特殊意義的字符

三、正則表達式五大內部類:(只要有一個字符滿足條件,就是true)

(1)預定義類:(通配,數字字符,單詞字符,空白字符)

技術分享圖片

(2)簡單內部類

/sjdfi/ 必須是完整的包含指定字符,可以多,但不能少

/[suej]/ 只要滿足中括號中的一個就可以

(3)負向類

/[^abc]/ 取反,^符號在[]中,用來檢測的字符串數量不夠或者剛剛好滿足其中一個字符,返回false。超出規定數量或者沒有一個與指定字符相符,就是滿足條件,返回true.

(4)範圍類

規定一個範圍進行檢測

[a-z] [A-Z] 只要檢測的值一個滿足給定範圍,返回true

(5)組合類

[a-zA-Z0-9$%*] 多個判定條件組合在一起

四、正則邊界

/^abc/ ^ 以給定字符開頭 (註意:在[]中括號中是取反,不在中括號中是以什麽開頭)

/zfg$/ $ 以給定字符結尾,

^和$在一起使用,表示精確匹配,必須是這個[^abc$];

/^\w/ 表示以字母,數字或者下劃線開頭的字符

/^\w$/ 當有了前後的邊界,只能匹配單個字符,要想匹配多個,就要用到量詞。

五、正則量詞(量詞使用在前後都有邊界的情況下,並且一個量詞跟一個標準)

(1)* >=0 模板給定的字符可以出現一次或者多次,但不能出現其他字符

Var reg = /^a*$/; a可以出現0次或者多次,不能出現其他任何字符

/^abc*$/ 這種情況,可以出現多次c,但ab只能出現一次,且出現順序是 abccc,不能調換。要想每個字符都可以出現多次,那麽每個字符後面都要跟上量詞,並且順序也不能換

/^a*b+c?$/ aaabbbbc; true; abcabc; false;

(2)+ >=1 給定字符至少出現一次

/^a+$/

(3)? 0||1 給定字符出現0次或者1次

/^z?$/; z只能出現0次或者1次

/^\w+$/; 可以出現多次同樣的字母,數字,下劃線

/^[abc]+$/; 可以多次出現[abc]中的任意一個字符,但不能超出abc這三個字符的範圍

(4){} 大括號中的數字限定模板字符出現的個數

/^[abc]{2}$/; 可以出現模板中的任意兩個字符

/^abc{2}$/; 規定必須完整的出現abc,並且c出現量詞(一個量詞跟一個標準,沒有任何包裹的字母都可以看成一個判定標準,/abc/這種形式屬於簡單內部類)

(5){2,} 出現大於等於2次

/^\w{3,}$/; 出現字母,數字,下劃線的次數大於等於三次

/^ab{4,}c{2,}d$/ 必須以這個順序依次出現,b的次數要大於等於4次,c的次數要大於等於2,d最後一次出現結尾。

(6){2,5} 出現2次到5次(包括)

/^[a-zA-Z]{2,5}$/ a-z,A-Z這個範圍類的字符出現2-5次(大於等於2,小於等於5)

(7)| 只能用在簡單內部類且不帶任何包裹的判定添加上(可以加括號)

/^abc|def$/; 滿足abc開頭或者def結尾的都可以

六、正則實例

(1)匹配手機號 var reg = /^1[3458]\d{9}$/.

(2)匹配固定電話 var reg = /^(0\d{2}[\-]\d{8})|(0\d{3}[\-]\d{7})$/;

滿足0開頭,中間兩位是0-9之間的數字,第三位是-(需要轉義字符轉義,否則即使[範圍連接符]),最後8位是0-9的數字

(3)匹配qq號 var reg = /^[1-9][0-9]{4,10}$/

(4)匹配郵箱(註意,特殊字符需要轉義)

var reg = /^[\w\-\.]+\@[\w]+\.[\w]{2,4}$/

參考資料: w3c 善知堂教育http://www.itszt.com/

徹底理解正則表達式