JS-正则表达式-替换
利用正則表達式將源字符串中的某一部分替換成另一部分(只能替換文字字母,字符不能替換):
var sToChange = "The sky is red";
var result = sToChange.replace("red", "blue");
alert(result); //輸出:The sky is blue
上面的 replace 方法第一個參數是一個字符串,第二個是要替換的部分,但這樣只能替換一次.要將源字符串中所有的red都替換成blud,可以這樣:
var sToChange = "The sky is red really red";
var reg = /red/gi
var result = sToChange.replace(reg, "blue");
alert(result); //輸出:The sky is blue really blue
上面第一個參數是一個正則表達式,第二個是要替換成的部分.還有另一種做法,第一個參數是正則表達式,第二個是處理函數:
var sToChange = "The sky is red really red";
var reg = /red/gi
var result = sToChange.replace(reg, function(sMatch){ return "blue"; });
alert(result); //輸出:The sky is blue really blue
上面函數里面的sMatch表示通過匹配,從源字符串中獲得到的已匹配的字符.如上例中,模式從源字符串中匹配出來的始終都是"red";更直觀的例子如下:
var sTo = /(fuck|shit|ahswhole|bitch)/g;
var sMyStr = "the son of the bitch,fuck you ,like a piece of shit!ahswhole!";
var resultStr = sMyStr.replace(sTo, function(sMatch){ return sMatch.replace(/./g, "*"); });
alert(resultStr); //輸出:the son of the *****,**** you ,like a piece of ****!********!
可以看出輸出的星號是不等的,因為匹配的時候,當表達式匹配到bitch的時候,傳入函數的就是bitch,然后函數將它替換成:*****,五個星號,然后返回;然后繼續匹配,碰到fuck,然后傳入函數,這時sMatch就是:fuck,然后將它替換成:****四個星號.依此類推.
另一實例;
var sToChange = document.getElementByIdx_x("abc").innerHTML;
var reg = /<img.*?src="(.*?)".*?>/gi
var result = sToChange.replace(reg, function(sMatch){
var backStr = "<a href="" + RegExp.$1 + "" class="highslide" onclick="return hs.expand(this)">";
backStr += sMatch;
backStr += "</a>";
backStr += "";
return backStr;
});
document.getElementByIdx_x("abc").innerHTML = result;
總結
以上是生活随笔為你收集整理的JS-正则表达式-替换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBootSecurity学习
- 下一篇: SLA打印机之Slc文件解析