js使用正則實(shí)現(xiàn)ReplaceAll全部替換的方法
JS 字符串有replace() 方法。但這個(gè)方法只會(huì)對(duì)匹配到的第一個(gè)字串替換。
replace() 方法用于在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。
語(yǔ)法:
stringObject.replace(regexp/substr,replacement)
第一個(gè)參數(shù)為一個(gè)字符串或者一個(gè)正則表達(dá)式,第二個(gè)參數(shù)為一個(gè)字符串或者一個(gè)用于生成字符串的函數(shù)。注意重點(diǎn):
如果 regexp 具有全局標(biāo)志 g,那么 replace() 方法將替換所有匹配的子串。否則,它只替換第一個(gè)匹配子串。
實(shí)例:
var str = "dogdogdog"; var str2 = str.replace("dog","cat"); console.log(str2);
這里僅替換第一個(gè)dog字符串,輸出為catdogdog。
如下例:
<HTML> <HEAD> <TITLE> New Document </TITLE> </HEAD> <BODY> <script> var str = "wordwordwordword"; var strNew = str.replace("word","Excel"); alert(strNew); </script> </BODY> </HTML>
如果要全部替換的話,JS 沒(méi)有提供replaceAll這樣的方法。使用正則表可以達(dá)成Replace 的效果:
str.replace(/word/g,"Excel")
g 的意義是:執(zhí)行全局匹配(查找所有匹配而非在找到第一個(gè)匹配后停止)。
<HEAD> <TITLE> New Document </TITLE> <script> function replaceAll(str) { if(str!=null) str = str.replace(/word/g,"Excel") return str; } </script> </HEAD> <BODY> <script> var str = "wordwordwordword"; var strNew = str.replace("word","Excel"); strNew = replaceAll(str); alert(strNew); </script> </BODY> </HTML>
以上寫(xiě)法有個(gè)類(lèi)同的寫(xiě)法:
str.replace(new RegExp("word","gm"),"Excel")
g 執(zhí)行全局匹配(查找所有匹配而非在找到第一個(gè)匹配后停止)。
m 執(zhí)行多行匹配。
除此之外,也可以添加 Stirng對(duì)象的原型方法:
String.prototype.replaceAll = function(s1,s2){ return this.replace(new RegExp(s1,"gm"),s2); }
這樣就可以像使用replace 方法一樣使用replaceAll了
str.replaceAll("word","Excel");
總結(jié)一下, 四種方式
1. 使用具有全局標(biāo)志g的正則表達(dá)式
var str = "dogdogdog"; var str2 = str.replace(/dog/g,"cat"); console.log(str2);
實(shí)現(xiàn)替換全部匹配字符串,輸出結(jié)果為:catcatcat
。
2. 使用另一種具有全局標(biāo)志g的正則表達(dá)式
var str = "dogdogdog"; var str2 = str.replace(new RegExp("dog","gm"),"cat"); console.log(str2);
輸出結(jié)果同上例。這里g表示執(zhí)行全局匹配,m表示執(zhí)行多次匹配。
3. 給string對(duì)象添加原型方法replaceAll()
String.prototype.replaceAll = function(s1, s2) { return this.replace(new RegExp(s1, "gm"), s2); }
這樣就可以像使用replace方法一樣使用replaceAll方法:
var str = "dogdogdog"; var str2 = str.replaceAll("dog", "cat"); console.log(str2);
輸出結(jié)果同上例。
4. 使用先split,再join的方法
評(píng)論區(qū)@默默之分享的這個(gè)方法太贊了,拉到正文里以免有人不看評(píng)論,感謝@默默之分享。
var str = "dogdogdog"; var str2 = str.split("dog").join("cat") console.log(str2);
輸出結(jié)果同上例。
PS:關(guān)于正則,本站還提供了2款非常簡(jiǎn)便實(shí)用的正則表達(dá)式工具供大家使用:
JavaScript正則表達(dá)式在線測(cè)試工具:http://tools.jb51.net/regex/javascript
正則表達(dá)式在線生成工具:http://tools.jb51.net/regex/create_reg
到此這篇關(guān)于js使用正則實(shí)現(xiàn)ReplaceAll全部替換的方法的文章就介紹到這了,更多相關(guān)js ReplaceAll內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- javascript中使用replaceAll()函數(shù)實(shí)現(xiàn)字符替換的方法
- Javascript中正則表達(dá)式的全局匹配模式分析
- Javascript中使用exec進(jìn)行正則表達(dá)式全局匹配時(shí)的注意事項(xiàng)
- JavaScript實(shí)現(xiàn)的字符串replaceAll函數(shù)代碼分享
- javascript實(shí)現(xiàn)全局匹配并替換的方法
- java中replaceAll替換圓括號(hào)實(shí)例代碼
- Java中replace與replaceAll的區(qū)別與測(cè)試
- java字符串的替換replace、replaceAll、replaceFirst的區(qū)別說(shuō)明
- Java replaceAll()方法報(bào)錯(cuò)Illegal group reference的解決辦法
- String.replaceAll方法詳析(正則妙用)
- 淺談Java中replace與replaceAll區(qū)別
- Java中replace、replaceAll和replaceFirst函數(shù)的用法小結(jié)
- 淺談java中replace()和replaceAll()的區(qū)別
- jQuery中replaceAll()方法用法實(shí)例
- js字符串替換所有的指定字符或文字(推薦replaceAll方法)
- JS中實(shí)現(xiàn)replaceAll的方法(實(shí)例代碼)
- js replace 與replaceall實(shí)例用法詳解
- Flex 字符串ReplaceAll使用說(shuō)明
- JavaScript中使用replace結(jié)合正則實(shí)現(xiàn)replaceAll的效果
相關(guān)文章
javascript 窗口加載蒙板 內(nèi)嵌網(wǎng)頁(yè)內(nèi)容
用于在現(xiàn)有窗口上加載蒙板,在蒙板內(nèi)在嵌入其他頁(yè)面內(nèi)容2010-11-11使用JS操作文件(FileReader讀取--node的fs)
這篇文章主要介紹了使用JS操作文件(FileReader讀取--node的fs),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12JavaScript對(duì)IE操作的經(jīng)典代碼(推薦)
本篇文章主要是對(duì)JavaScript對(duì)IE操作的經(jīng)典代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-03-03JS實(shí)現(xiàn)多級(jí)菜單中當(dāng)前菜單不隨頁(yè)面跳轉(zhuǎn)樣式而發(fā)生變化
本文介紹了JQuery巧妙實(shí)現(xiàn)多級(jí)菜單中當(dāng)前菜單不隨頁(yè)面跳轉(zhuǎn)樣式發(fā)生變化,實(shí)現(xiàn)方法非常簡(jiǎn)單,感興趣的朋友一起看看吧2017-05-05javascript 獲取多條數(shù)據(jù)(模擬ajax獲取數(shù)據(jù))
javascript 獲取多條數(shù)據(jù)(模擬ajax獲取數(shù)據(jù)),這樣的好處不用額外的ajax讀取鏈接,減輕服務(wù)器負(fù)擔(dān)。2009-06-06微信小程序?qū)崿F(xiàn)聊天對(duì)話(文本、圖片)功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)聊天對(duì)話功能,可以發(fā)送文本、圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07JavaScript 5 新增 Array 方法實(shí)現(xiàn)介紹
JavaScript 5 發(fā)布有一段時(shí)間了,Array 對(duì)象新增了很多方法。但在老版本的瀏覽器上還不能使用,得益于 JavaScript 的動(dòng)態(tài)可擴(kuò)展性,我實(shí)現(xiàn)了這些方法,在此曬出來(lái)與君共勉2012-02-02