
1)精确比對
如果一個字元不是特殊字元或操作符,則表示該字元必須在表達式中出現。
例如“/test/”,就表示“t”後面跟着“e”,“e”後面跟着“s”,“s”後面跟着“t”。
2)比對一類字元
很多時候是想比對一個有限字元集中的某一個字元。
例如“[abc]”,就是要比對“a”、“b”或“c”中的任意一個字元。
例如“[^abc]”,就是除了“a”、“b”、“c”之外的任意字元。
例如“[a-m]”,就是從“a”到“m”之間的任意字元。
3)轉義
并不是所有字元和其字元字面量都是等價的。
例如比對“$”、“.”這種特殊字元,需要添加“\”反斜杠,“\$”、“\.”。
4)比對開始與比對結束
經常需要確定模式比對一個字元串的開始,或者一個字元串的結束。
“/^test/”表示以“test”開始,“/test$/”表示以“test”結尾。
5)重複出現
1. “?”表示出現一次或不出現,例如“/t?est/”可以比對“test”或“est”。
2. “+”表示出現一次或多次,例如“/t+est/”可以比對“test”、“ttest”。
3. “*”表示出現零次或多次,例如“/t*est/”可以比對“est”、“test”。
4. “{number}”表示指定出現的次數,例如“/a{4}/”可以比對“aaaa”。
5. “{number,number}”兩個數字表示重複次數區間,例如“/a{1,3}/”可以比對“aa”、“aaa”或“aaaa”。
6. “{number,}”次數區間的第二個數字可選,表示一個開區間。例如“/a{1,}/”比對連續2個“a”或更多的“a”。
7. 重複操作預設是貪婪比對,如果要非貪婪(隻做一次比對)的可以在操作符後面加“?”,例如“*?”、“+?”。
6)預定義字元類
有一些字元是不可能用字面量字元來表示的(例如回車)。
還有一些經常想比對的字元類,例如小數位數或一組空白字元。
7)分組
如果将操作符應用于一組術語,可以添加小括号。
例如“/(ab)+/”比對一個或多個“ab”字元串。
當用括号進行分組的時候,就建立了捕獲(capture)。
8)或操作符
可以用“|”表示或的關系。
例如“/a|b/”比對“a”或“b”。
9)反向引用
在反斜杠後面加一個要引用的捕獲數量,該數字從1開始,例如“\1”、“\2”。
例如“/<(\w+)>(.+)<\/\1>/”比對“<b>strong</b>”,不用反向引用是無法做到的。
1)執行簡單的捕獲
match傳回的第一個索引的值總是該比對的完整結果,然後是每個後續捕獲結果。
2)用全局表達式進行比對
在進行局部比對時,隻有一個執行個體被比對了,并且該比對的捕獲結果也傳回了。
在進行全部比對時,傳回的是比對結果的清單。
exec方法儲存了上次調用的狀态,這樣每個後續調用就可以繼續下去了,直到全局比對。每一個調用傳回的都是下一個比對及其比對内容。
match中的内容如下,這裡就顯示兩個,其他類似的,下面的index就是目前字元串開始比對的索引值。
3)捕獲的引用
有兩種方法可以引用捕獲到的比對結果:自身比對,替換字元串。
1. 自身比對
2.替換字元串
替換字元串“replace”方法,與反向引用不一樣,這裡使用“$1”、“$2”文法表示每個捕獲的數字。
1. $i (i為數字) : 從左到右正則子表達式所比對的文本。
2. $&:與正規表達式比對的全文本。
3. $`(頓号):比對字元串的左邊文本。
4. $’(單引号):比對字元串的右邊文本。
5. $$:比對$自己。
4)沒有捕獲的分組
該表達式隻會為外層的括号建立捕獲。
本文轉自 咖啡機(K.F.J) 部落格園部落格,原文連結:http://www.cnblogs.com/strick/p/6048862.html,如需轉載請自行聯系原作者