根據W3C的定義,在JavaScript中,正規表示式(regular expression)是一個描述字元模式 (a pattern of characters) 的物件,它可以用來查看某一段文字是否符合我們定義的文字模式,也可以用來找尋或取代文字中符合模式的字串,而且在String和RegExp中定義了一些方法,搭配正規表示式,就能對文字進行強大的模式匹配、搜尋或取代的功能。
我們要得到一個regular expression的物件的話,可以使用下列語法:
var pt = new RegExp(pattern, modifiers);或是
var pt = /pattern/modifiers; //我自己實作上比較常用這一方式上列語法中:
pattern
是我們要定義的「表式示的模式」(pattern of expression)。
而
modifiers
指明我們想要做是「不分大小寫」、「全部」或「多行」的比對,定義如下:i
:做不分大小寫(case-0insensitvie matching)的比對。g
:對全部要比對的字串,做比對,而不是比對成功後就停下來。m
:做多行的比對。
用些例子來說明吧!
//這個表示式的意思是,要找比對的字串中,有沒有含有字母「e」或「E」。 var reg1 = new RegExp('e', 'i'); //或者 var reg1 = /e/i; 請注意,這裡不用單引號或雙引號來包字串 //然後用來測試字串 reg1.test('e'); //結果 true reg1.test('E'); //結果 true這次若不加
i
再測試看看:
//這個表示式的意思是,要找比對的字串中,有沒有含有字母「e」, //沒加「i」,所以有分大小寫 var reg1 = new RegExp('e'); reg1.test('e'); //結果為 true reg1.test('E'); //結果為 false從上列結果來看,若有加
i
的modifier的話,則在比對時,就不會去分大小寫。
再來看
g
這個modifier,要看這個參數的功能我們要用String
的match()
函式來說明。
var reg = /has/; var para = 'He has a friend who has a dog that has long tail'; para.match(reg); //結果為has在上列程式中,
match()
函式會以array object
回傳比對成功的結果,雖然在我們比對的字串para
中有三個has
,但這裡回傳的陣列只包含了第一個比對成功的字串。
再來加入
g
參數:
var reg = /has/g; para.match(reg); //結果 has,has,has現在回傳的陣列長度為3,包含了三個「has」了。
上列的也可以一起混用,如:
var reg = /has/gi; //比對不分大小寫,而且要比對到字串結尾為止 para.match(reg); //結果 has,has,has至於
m
這個modifier,目前還沒想到比較好的例子,在這裡先跳過了。
接下來,我要開始探索比對模式的部份。
如果你想學好JavaScript,我推薦: