本文實例總結了javascript的replace方法結合正則使用方法。分享給大家供大家參考,具體如下:
replace()方法用於在字符串中用一些字符替換另一些字符,或者替換一個正則表達式匹配的字符串
例子一:直接使用repalce替換
var stringObj="終古人民共和國,終古人民"; //替換錯別字“終古”為“中國” //並返回替換後的新字符 //原字符串stringObj的值沒有改變 var newstr=stringObj.replace("終古","中國"); //中國人民共和國,終古人民 alert(newstr);
例子二:使用正則表達式,全部替換
var str="終古人民共和國,終古人民"; var newstr=str.replace(/(終古)/g,"中國"); //中國人民共和國,中國人民 alert(newstr);
等價於
var reg=new RegExp("終古","g"); //創建正則RegExp對象 var stringObj="終古人民共和國,終古人民"; var newstr=stringObj.replace(reg,"中國"); alert(newstr);
例子三:正則表達式,變量匹配
var resource="終古"; var target="中國"; var reg=new RegExp(resource,"g"); //創建正則RegExp對象 var stringObj="終古人民共和國,終古人民"; var newstr=stringObj.replace(reg,target); alert(newstr);
例子四:正則分組匹配
var strM = "javascript is a good script language"; //$1匹配的是javascript,$2匹配的是is //最終返回的值是"javascript is fun. it is" + strM //即javascript is 被替換為 javascript is fun. it is alert(strM.replace(/(javascript)\s*(is)/g,"$1 $2 fun. it $2"));
例子五:使用回調函數做詳細處理
var name="aaa bbb ccc"; //name字符串去匹配/\b\w+\b/g表達式,結果有三個——aaa,bbb,ccc;每個結果執行function裡面的方法 var uw = name.replace(/\b\w+\b/g,function(word){ //word是匹配的字符串 alert(word); return word.substring(0,1).toUpperCase()+word.substring(1); }); alert(uw);
例子六:比較生僻的寫法
var reg=new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); var url="http://www.qidian.com/BookReader/1017141,20361055.aspx"; //方式一,最簡單常用的方式 var rep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3"); alert(rep); //方式二 ,采用固定參數的回調函數 var rep2=url.replace(reg,function(m,p1,p2,p3){ return p1+"ShowBook.aspx?bookId="+p3+"&chapterId="+p3 }); alert(rep2); //方式三,采用非固定參數的回調函數 var rep3=url.replace(reg,function(){ var args=arguments; return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3]; }); alert(rep3);
function ReplaceDemo(){ var r, re; // 聲明變量。 var ss = "The rain in Spain falls mainly in the plain."; // \s表示的是空格,則\S表示的是非空格,因此/(\S+)(\s+)(\S+)/g匹配的是“非空格空格非空格”的結果 //匹配的結果有The rain、in Spain、falls mainly、in the //替換後的結果有rain The、Spain in、mainly falls、the in re = /(\S+)(\s+)(\S+)/g; // 創建正則表達式模式。 //更改匹配結果之間的順序 r = ss.replace(re, "$3$2$1"); // 交換每一對單詞。 return(r); // 返回結果字符串。 } alert(ReplaceDemo());
name = "Doe, John"; //更改兩個單詞之間的順序 var temp = name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1"); alert(temp);
function SDReplaceData(objStr) { return objStr.replace( /(\&|\')/g, function($0, $1) { return{ "&" : "&" , "'" : "'" }[$1]; } ); }
PS:這裡再為大家提供2款非常方便的正則表達式工具供大家參考使用:
JavaScript正則表達式在線測試工具:
http://tools.jb51.net/regex/javascript
正則表達式在線生成工具:
http://tools.jb51.net/regex/create_reg
更多關於JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》
希望本文所述對大家JavaScript程序設計有所幫助。