RegExp類
RegExp對象的構造函數可以帶一個或兩個參數
第一個參數是描述需要進行匹配的模式字符串,如果還有第二個參數,這個參數則制定了額外的處理指令。
一、基礎
1.1使用RegExp對象
test()方法
測試是否匹配。如果給定字符串(只有一個參數)匹配這個模式,它就返回true,否則返回false
代碼如下:
var sToMatch = "cat";
var reCat = /cat/; //正則表達式字面量使用Perl風格的語法
alert(reCat.test(sToMatch)); //outs "true"
exec()方法
有一個字符串參數,返回一個數組。數組中的第一個條目是第一個匹配,其他的是反向引用。(即數組中只有一個,并且是第一個匹配的)
代碼如下:
var strAAA = "a bat, a Cat, a fAt baT, a faT cat";
var regAt = new RegExp("at", "gi");
var arr = regAt.exec(strAAA); //arr[0]為"at",arr.index值為3,arr.lastIndex值為5
match()方法
返回一個包含在字符串中的所有匹配的數組。
var strAAA = "a bat, a Cat, a fAt baT, a faT cat";
var regAt = new RegExp("at", "gi");
var arrMatch = strAAA.match(regAt); //注意:字符串.match(參數是匹配字符)跟上面相反
search()方法
與indexOf()有些類似,返回在字符串中出現的一個匹配的位置。它的參數是一個RegExp對象而非僅僅一個子字符串。
代碼如下:
var strAAA = "a bat, a Cat, a fAt baT, a faT cat";
var regAt = new RegExp("at", "gi");
var index = strAAA.search(regAt); //outputs "3" 第一次出現位置是3
1.2擴展字符串方法
replace()方法
可以用第二個參數替換第一個參數,而在這里第一個參數也可以是一個正則表達式。
var strBBB = "The Sky is red.";
//將上面這句話中的所有s替換,用正則表達式找出所有匹配的
var strNewBBB = strBBB.replace(/s/gi, "##"); //把所有的“s”(不管大小寫)都替換成##
再進行升級一下,第二個參數也可以是一個函數
代碼如下:
var sToChange = "The sky is red.";
var reRed = /red/;
var sResultText = sToChange.replace(reRed, function(sMatch) {
return "blue";
});
alert(sResultText);
在這個例子中,在函數中的sMatch的值總為"red" (因為這是唯一匹配的模式)."red"的首次出現被替換為函數的返回值"blue".
附加:
對于書上這句話“因為這是唯一匹配的模式”我認為應該是這個意思吧,replace只有兩個參數,第一個參數找出來的是唯一的,那個function的參數sMatch應該就是前面的第一個參數的值,唯一匹配模式。。。
split()方法
代碼如下:
var sColor = "red,blue,yellow,green";
var reComma = //,/;
var arrColors = sColor.split(reComma); //split at each comma
alert(arrColors.length); //outputs "4"
正則表達式reComma中必須在逗號前有一個反斜杠,因為逗號在語法中有特殊含義,必須經過轉義。
新聞熱點
疑難解答
圖片精選