search : 找到返回位置; 找不到返回 -1
var str, p, n;str = '1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC';p = /abc/i;n = str.search(p);alert(n); //2p = /abcde/i;n = str.search(p);alert(n); //-1//這個函數和 RegExp.test 差不多, 不過 test 返回的是 true/false; 全域選項 g 對它們都沒有意義.
match : 匹配並返回結果, 結果是數組
//首先, String.match 和 RegExp.exec 功能類似, 但 match 更方便使用.var str, p, arr;str = '1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC';//不指定全域匹配, 只返回第一組(包含子匹配)p = /(ab)(c)/i;arr = str.match(p);alert(arr); //abc,ab,c//指定了全域匹配, 會返回所有匹配結果(但不包括子匹配)p = /(ab)(c)/ig;arr = str.match(p);alert(arr); //abc,Abc,aBc,abC,ABc,aBC,AbC,ABC//這個使用雖然方便了, 但不能擷取所有子匹配的細節; 但 exec 可以.
replace : 強大的替換函數; replace(Regex, 要替換的內容); 返回替換後的結果
var str1, str2, p;str1 = '1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC';p = /abc/ig;str2 = str1.replace(p, '*');alert(str2); //1:*;2:*;3:*;4:*;5:*;6:*;7:*;8:* p = /abc/i;str2 = str1.replace(p, '*');alert(str2); //1:*;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC //$1...$99 表示子運算式:var str1, str2, p;str1 = '1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC';p = /(ab)(c)/ig;str2 = str1.replace(p, '$1');alert(str2); //1:ab;2:Ab;3:aB;4:ab;5:AB;6:aB;7:Ab;8:ABp = /(ab)(c)/ig;str2 = str1.replace(p, '《$2》');alert(str2); //1:《c》;2:《c》;3:《c》;4:《C》;5:《c》;6:《C》;7:《C》;8:《C》 //$& 表示整個運算式的匹配結果var str1, str2, p;str1 = '1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC';p = /(ab)(c)/ig;str2 = str1.replace(p, '"$&"');alert(str2); //1:"abc";2:"Abc";3:"aBc";4:"abC";5:"ABc";6:"aBC";7:"AbC";8:"ABC" //$` 表示匹配結果左邊的內容; $' 表示匹配結果右邊的內容; $ 自身得用 $$ 表示.var str1, str2, p;str1 = '1234ABC5678';p = /ABC/;str2 = str1.replace(p, '《$`》');alert(str2); //1234《1234》5678 str2 = str1.replace(p, "《$'》");alert(str2); //1234《5678》5678 str2 = str1.replace(p, '$$');alert(str2); //1234$5678 //replace 的第二個參數可以是個函數(注意函數的調用方式有點特別)var str1, str2, p;str1 = '1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC';p = /(ab)(c)/ig;function fun1(s) { return s.toUpperCase();}function fun2(s) { return '《' + s.toLowerCase() + '》';}function fun3(s) { return s.length;}str2 = str1.replace(p, fun1);alert(str2); //1:ABC;2:ABC;3:ABC;4:ABC;5:ABC;6:ABC;7:ABC;8:ABC str2 = str1.replace(p, fun2);alert(str2); //1:《abc》;2:《abc》;3:《abc》;4:《abc》;5:《abc》;6:《abc》;7:《abc》;8:《abc》 str2 = str1.replace(p, fun3);alert(str2); //1:3;2:3;3:3;4:3;5:3;6:3;7:3;8:3
split : 分割字串, 返回數組
var str1, arr, p;str1 = '1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC';p = /abc/i;arr = str1.split(p);alert(arr); //1:,;2:,;3:,;4:,;5:,;6:,;7:,;8: p = /;/;arr = str1.split(p);alert(arr); //1:abc,2:Abc,3:aBc,4:abC,5:ABc,6:aBC,7:AbC,8:ABCp = /;\d:/;arr = str1.split(p);alert(arr); //1:abc,Abc,aBc,abC,ABc,aBC,AbC,ABC
簡單使用這幾個函數
//如果在Regex的位置給了字串, JavaScript 也會把它們轉成Regex; 但不使用正則功能太弱了.var str1, str2, n, arr;str1 = 'Delphi 2009';n = str1.search('p');alert(n); //3arr = str1.match('p');alert(arr); //pstr2 = str1.replace('0', '*');alert(str2); //Delphi 2*09arr = str1.split(' ');alert(arr[0]); //Delphialert(arr[1]); //2009