正則(一)

正則(regular expression)是幹什麼的?

正則表達式是用來處理字符串的,它的特長在於處理複雜的字符串。
正則表達式定義的是字符串的模型(或叫模式,英文pattern),我們可以使用這個模型來去驗證某個字符串(或字符串裏的一部分)是否和這個模型(或叫模式)相匹配,或使用這個模型把某個字符串裏和這個模型匹配的那一部分找出來。
再重述一遍:

  • 1、正則定義了一個字符串的模型。
  • 2、正則的第一個作用是“驗證某字符串是否和這個模型相匹配”。
  • 3、正則的第二個作用是“把匹配到的內容找出來”。

其實正則只是定義了一個字符串的模型,至於如何去驗證字符串和查找字符串,是正則類上的方法完成的。
比如:var reg=/\d+/;寫在兩個/斜槓之間,是語法規範,表示定義了一個正則對象。 \d在正則中表示數字,+表示出現一到多次。那這樣就定義了一個出現一到多次的數字的模型。它可以和以下字符串匹配:”ab23839cd”,”a4d”、”33928”、”3490cf”、”0938FA”、”z9”,因爲這些字符串裏,都出現了一到多次的數字,如果用正則類的test方法去驗證它們,都會返回true。
例:

var reg=/\d+/;     //相當於定義了“一個數字出現一到多次”的模型
	var str=”ab23839cd”;
alert(reg.test(str)); //彈出true

這裏的test方法,是正則類的方法,以字符串爲參數,就是負責驗證str是否符合reg定義的模式。下面再定義一個字符串:

var str2=”abcdef”;
	alert(reg.test(str2));//這次彈出的是false,因爲str2裏,沒有出現數字。

以上只是驗證字符串,如果想把符合驗證的字符串找出來,則就要用其它方法了,例:

alert(reg.exec(str));//彈出23839

alert(reg.exec(str2));//彈出null,因爲reg和str2不匹配。

當然,我也還可以用String類的match方法來找到和reg正則相匹配的內容,例:

alert(str.match(reg));//彈出23839

exec和match,都是處理字符串功能很強大的方法,後邊的章節裏會有非常詳細的闡述。

如果嚴格的匹配一到多個數字,不能出現其它字符,應該這樣寫:

var reg=/^\d+$/;

這個模型才表示從開頭到結尾都是數字。^表示後邊出現的數字必須在開頭,$表示前面出現的數字必須出現在結尾。像^、$、\d、+這些在正則裏表示特殊含義的符號,叫“元字符”。
在正則裏,不是隻允許出現元字符,普通的字符也是可以出現的。在正則裏出現的普通字符,就表示此字符本來的含意。比如:
var reg=/^\d8\d$/; //這個表示匹配一個只包含三位數字,中間是8的字符串。詳解:^\d表示以任意數字開頭,一個\d表示出現一次;中間的8就表示字符8本身,後邊的\d$表示一個任意數字結尾。所以這個正則可以匹配以下這些字符串:”282”,”389”,”081”等,但不匹配”1899”,”819”,”08”這樣的字符串。
/^\d8\d$/這個正則裏,首尾的兩個\d和中間的8,都表示一個字符,它們是組成正則的最基本單位,我們叫它們“原子”,\d是原子,8也是原子。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章