JS的replace方法介紹
下文展示了幾種javascript正則表示式的repalce方式,有些方式我們很少在別的地方看到,如第二種和第三方中方法。
//下面的例子用來(lái)獲取url的兩個(gè)參數(shù),并返回urlRewrite之前的真實(shí)Url
var reg=new RegExp("(http://www.dhdzp.com/BookReader/)(\\d+),(\\d+).aspx","gmi");
var url="http://www.dhdzp.com/BookReader/1017141,20361055.aspx";
//方式一,最簡(jiǎn)單常用的方式
var rep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3");
alert(rep);
//方式二 ,采用固定參數(shù)的回調(diào)函數(shù)
var rep2=url.replace(reg,function(m,p1,p2,p3){return p1+"ShowBook.aspx?bookId="+p3+"&chapterId="+p3});
alert(rep2);
//方式三,采用非固定參數(shù)的回調(diào)函數(shù)
var rep3=url.replace(reg,function(){var args=arguments; return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];});
alert(rep3);
//方法四
//方式四和方法三很類(lèi)似, 除了返回替換后的字符串外,還可以單獨(dú)獲取參數(shù)
var bookId;
var chapterId;
function capText()
{
var args=arguments;
bookId=args[2];
chapterId=args[3];
return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];
}
var rep4=url.replace(reg,capText);
alert(rep4);
alert(bookId);
alert(chapterId);
//除了使用replace方法獲取正則表示式的分組外,還可以使用test ,exec方法獲取分組,只是手法有所不同而已
var reg2=new RegExp("(http://www.dhdzp.com/BookReader/)(\\d+),(\\d+).aspx","gmi");
var m=reg2.exec("http://www.dhdzp.com/BookReader/1017141,20361055.aspx");
var s="";
//獲取所有的分組
for (i = 0; i < m.length; i++) {
s = s + m[i] + "\n";
}
alert(s);
bookId=m[2];
chapterId=m[3];
alert(bookId);
alert(chapterId);
//使用test方法獲取分組
var reg3=new RegExp("(http://www.dhdzp.com/BookReader/)(\\d+),(\\d+).aspx","gmi");
reg3.test("http://www.dhdzp.com/BookReader/1017141,20361055.aspx");
//獲取三個(gè)分組
alert(RegExp.$1);
alert(RegExp.$2);
alert(RegExp.$3);
var str="www.baidu.com";
//str.format("好","q")
str.replace(new RegExp("(\\.)(bai)du","g"),function(){
for(var i=0;i<arguments.length;i++)
{
document.write(arguments[i]+"<br/>");
}
document.write("-------------------------------------------------<br/>");
});
兩個(gè)例子(證明,replace傳入正則參數(shù)和字符傳參數(shù)結(jié)果不同):
alert("123".replace("1",function(){var un;return un;})); //彈出undefined23
alert("123".replace(new RegExp("1"),function(){var un;return un;})); //彈出23
相關(guān)文章
解決js函數(shù)閉包內(nèi)存泄露問(wèn)題的辦法
這篇文章主要通過(guò)舉例介紹了解決js函數(shù)閉包內(nèi)存泄露問(wèn)題的辦法,感興趣的小伙伴們可以參考一下2016-01-01
JS實(shí)現(xiàn)水平移動(dòng)與垂直移動(dòng)動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)水平移動(dòng)與垂直移動(dòng)動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
教你3分鐘利用原生js實(shí)現(xiàn)有進(jìn)度監(jiān)聽(tīng)的文件上傳預(yù)覽組件
這篇文章主要給大家介紹了關(guān)于如何3分鐘利用原生js實(shí)現(xiàn)有進(jìn)度監(jiān)聽(tīng)的文件上傳預(yù)覽組件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
uniapp如何使用 web-view 與網(wǎng)頁(yè)互相通信
這篇文章主要介紹了uniapp如何使用 web-view 與網(wǎng)頁(yè)互相通信,在A(yíng)PP中使用 this.$scope.$getAppWebview() 獲取webview對(duì)象實(shí)例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07
js獲取多個(gè)tagname的節(jié)點(diǎn)數(shù)組
寫(xiě)了個(gè)獲取多個(gè)tagname節(jié)點(diǎn)集合的小方法。類(lèi)似于jQuery的$(‘iput,select,textarea’,'#form’)的效果,返回是按節(jié)點(diǎn)在原有文檔流中的順序返回的2013-09-09
基于JavaScript實(shí)現(xiàn)添加到購(gòu)物車(chē)效果附源碼下載
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)添加到購(gòu)物車(chē)效果附源碼下載的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
js實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
Avalonjs雙向數(shù)據(jù)綁定與監(jiān)聽(tīng)的實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家介紹了Avalonjs雙向數(shù)據(jù)綁定與監(jiān)聽(tīng)的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-06-06

