javascript中正則表達式

在javascript中我們創建正則表達式有兩種方式:

第一種:直接定義並規定模式

var expression=/pattern/flag

其中,pattern是我們的匹配模式,flag是匹配標記,如‘g’表示全部匹配完才停止,‘i’表示不區分大小寫,‘m’則表示多行匹配

例如:匹配字符串中所有“at”

var pattern1=/at/g

匹配字符串中所有“at”,且不區分大小寫

var pattern2=/at/gi(注意這個匹配標誌連在一起寫)


第二種:用RegExp構造函數

var expression1=new RegExp("pattern","flag")

構造函數中需要傳的是字符串,如果我們的字符串中包含元字符,那麼我們需要對一些元字符如:{ [ ] ? ^ & \ | * + .}進行轉義,就是在這些字符前面加‘\’

例如:匹配第一個“ [fd]uck”,不區分大小寫

var pattern3=new RegExp("\[fd\]uck","i");

這種方式與第一種方式創建的正則表達式不一樣,第一種共享同一實例,而用構造函數則每次都創建一個實例。

來看下面的例子

var reg=null,i;

for(i=0;i<10;i++){

reg=/cat/g;

reg.test("catagory");

}

for(i=0;i<10;i++){

reg=new RegExp("cat","g");

reg.test("catagory");

}

在第一個循環中只會爲/cat/創建一個RegExp實例,由於實例屬性並不會重置,當進入第二次循環時,test方法便會失敗,因爲他是從上一次匹配的索引開始。

而第二個循環每次都創建了一個RegExp實例,所以每次都會返回TRUE。



PS:不管在什麼語言中,我們只需記住,在需要進行轉義的地方我們就用“\”(當然c語言還有“%”),例如要輸出“\abc”,那麼我們的字符串應該是“\\abc”,那如果我們要輸出“\\abc”呢,

那麼我們的字符串應該是“\\\\abc”,其中每個紅色的反斜槓對後面的反斜槓進行轉義。






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