js replace 與replaceall實(shí)例用法詳解
更新時(shí)間:2023年06月14日 00:59:01 投稿:shangke
這篇文章介紹了js replace 與replaceall實(shí)例用法詳解,有需要的朋友可以參考一下
stringObj.replace(rgExp, replaceText)
參數(shù)
stringObj
必選項(xiàng)。要執(zhí)行該替換的 String 對(duì)象或字符串文字。該字符串不會(huì)被 replace 方法修改。
rgExp
必選項(xiàng)。為包含正則表達(dá)式模式或可用標(biāo)志的正則表達(dá)式對(duì)象。也可以是 String 對(duì)象或文字。如果 rgExp 不是正則表達(dá)式對(duì)象,它將被轉(zhuǎn)換為字符串,并進(jìn)行精確的查找;不要嘗試將字符串轉(zhuǎn)化為正則表達(dá)式。
replaceText
必選項(xiàng)。是一個(gè)String 對(duì)象或字符串文字,對(duì)于stringObj 中每個(gè)匹配 rgExp 中的位置都用該對(duì)象所包含的文字加以替換。在 Jscript 5.5 或更新版本中,replaceText 參數(shù)也可以是返回替換文本的函數(shù)。
說明
replace 方法的結(jié)果是一個(gè)完成了指定替換的 stringObj 對(duì)象的復(fù)制。
下面任意的匹配變量都能用來識(shí)別最新的匹配以及找出匹配的字符串。在需要?jiǎng)討B(tài)決定替換字符串的文本替換中可以使用匹配變量。
字符 含義
$$ $ (JScript 5.5 或更新版本)
$& 指定與整個(gè)模式匹配的 stringObj 的部分。 (JScript 5.5 或更新版本)
$` 指定由 $& 描述的匹配之前的 stringObj 部分。 (JScript 5.5 或更新版本)
$' 指定由 $& 描述的匹配之后的 stringObj 部分。 (JScript 5.5 或更新版本)
$n 捕獲的第 n 個(gè)子匹配,此處 n 為從1到9的十進(jìn)制一位數(shù)。 (JScript 5.5 或更新版本)
$nn 捕獲的第 nn 個(gè)子匹配,此處 nn 為從01到99的十進(jìn)制兩位數(shù)。 (JScript 5.5 或更新版本)
如果 replaceText 為函數(shù),對(duì)于每一個(gè)匹配的子字符串,調(diào)用該函數(shù)時(shí)帶有下面的 m+3 個(gè)參數(shù),此處 m 是在 rgExp 中捕獲的左括弧的個(gè)數(shù)。第一個(gè)參數(shù)是匹配的子字符串。接下來的 m 個(gè)參數(shù)是查找中捕獲的全部結(jié)果。第 m+2 個(gè)參數(shù)是在 stringObj 中匹配出現(xiàn)的偏移量,而第 m+3 個(gè)參數(shù)為 stringObj。結(jié)果為將每一匹配的子字符串替換為函數(shù)調(diào)用的相應(yīng)返回值的字符串值。
Replace 方法更新全局 RegExp 對(duì)象的屬性。
示例
下面的示例演示了 replace 方法將第一次出現(xiàn)的單詞 "The" 替換為單詞 "A" 的用法。
function ReplaceDemo(){
var r, re; // 聲明變量。
var ss = "The man hit the ball with the bat.n";
ss += "while the fielder caught the ball with the glove.";
re = /The/g; // 創(chuàng)建正則表達(dá)式模式。
r = ss.replace(re, "A"); // 用 "A" 替換 "The"。
return(r); // 返回替換后的字符串。
}
另外, replace 方法也可以替換模式中的子表達(dá)式。 下面的范例演示了交換字符串中的每一對(duì)單詞:
function ReplaceDemo(){
var r, re; // 聲明變量。
var ss = "The rain in Spain falls mainly in the plain.";
re = /(S+)(s+)(S+)/g; // 創(chuàng)建正則表達(dá)式模式。
r = ss.replace(re, "$3$2$1"); // 交換每一對(duì)單詞。
return(r); // 返回結(jié)果字符串。
}
下面的示例(在 JScript 5.5 及更新版本中執(zhí)行)執(zhí)行的是從華氏到攝氏的轉(zhuǎn)換,它演示了使用函數(shù)作為 replaceText。要想知道該函數(shù)是如何工作的,傳遞一個(gè)包含數(shù)值的字符串,數(shù)值后要緊跟 "F" (例如 "Water boils at 212")。
function f2c(s) {
var test = /(d+(.d*)?)Fb/g; // 初始化模式。
return(s.replace
(test,
function($0,$1,$2) {
return((($1-32) * 5/9) + "C");
}
)
);
}
document.write(f2c("Water freezes at 32F and boils at 212F."));
js居然不提供replaceAll方法,用for循環(huán)又有效率問題,給你一個(gè)正則表達(dá)式的解決方案
js 代碼
String.prototype.replaceAll = function(s1,s2){
return this.replace(new RegExp(s1,"gm"),s2);
}
方法: string.replace(new RegExp(oldString,"gm"),newString))
gm g=global, m=multiLine , 大致上方法就是這樣的,可以實(shí)現(xiàn)替換全部指定字串
另一個(gè)簡(jiǎn)單的驗(yàn)證JS的方法:
在瀏覽器地址欄輸入
javascript:alert("abcabcabc".replace(new RegExp("a","gm"),"ad"))
這樣比較省事 ;) ,不知道多行的會(huì)不會(huì)很方便
orgStr.replace(new RegExp(findStr, 'g'), replaceStr)
應(yīng)該就可以替換所有的了
如果不用正則表達(dá)式
orgStr.replace(findStr, replaceStr)只能替換第一個(gè)
參數(shù)
stringObj
必選項(xiàng)。要執(zhí)行該替換的 String 對(duì)象或字符串文字。該字符串不會(huì)被 replace 方法修改。
rgExp
必選項(xiàng)。為包含正則表達(dá)式模式或可用標(biāo)志的正則表達(dá)式對(duì)象。也可以是 String 對(duì)象或文字。如果 rgExp 不是正則表達(dá)式對(duì)象,它將被轉(zhuǎn)換為字符串,并進(jìn)行精確的查找;不要嘗試將字符串轉(zhuǎn)化為正則表達(dá)式。
replaceText
必選項(xiàng)。是一個(gè)String 對(duì)象或字符串文字,對(duì)于stringObj 中每個(gè)匹配 rgExp 中的位置都用該對(duì)象所包含的文字加以替換。在 Jscript 5.5 或更新版本中,replaceText 參數(shù)也可以是返回替換文本的函數(shù)。
說明
replace 方法的結(jié)果是一個(gè)完成了指定替換的 stringObj 對(duì)象的復(fù)制。
下面任意的匹配變量都能用來識(shí)別最新的匹配以及找出匹配的字符串。在需要?jiǎng)討B(tài)決定替換字符串的文本替換中可以使用匹配變量。
字符 含義
$$ $ (JScript 5.5 或更新版本)
$& 指定與整個(gè)模式匹配的 stringObj 的部分。 (JScript 5.5 或更新版本)
$` 指定由 $& 描述的匹配之前的 stringObj 部分。 (JScript 5.5 或更新版本)
$' 指定由 $& 描述的匹配之后的 stringObj 部分。 (JScript 5.5 或更新版本)
$n 捕獲的第 n 個(gè)子匹配,此處 n 為從1到9的十進(jìn)制一位數(shù)。 (JScript 5.5 或更新版本)
$nn 捕獲的第 nn 個(gè)子匹配,此處 nn 為從01到99的十進(jìn)制兩位數(shù)。 (JScript 5.5 或更新版本)
如果 replaceText 為函數(shù),對(duì)于每一個(gè)匹配的子字符串,調(diào)用該函數(shù)時(shí)帶有下面的 m+3 個(gè)參數(shù),此處 m 是在 rgExp 中捕獲的左括弧的個(gè)數(shù)。第一個(gè)參數(shù)是匹配的子字符串。接下來的 m 個(gè)參數(shù)是查找中捕獲的全部結(jié)果。第 m+2 個(gè)參數(shù)是在 stringObj 中匹配出現(xiàn)的偏移量,而第 m+3 個(gè)參數(shù)為 stringObj。結(jié)果為將每一匹配的子字符串替換為函數(shù)調(diào)用的相應(yīng)返回值的字符串值。
Replace 方法更新全局 RegExp 對(duì)象的屬性。
示例
下面的示例演示了 replace 方法將第一次出現(xiàn)的單詞 "The" 替換為單詞 "A" 的用法。
復(fù)制代碼 代碼如下:
function ReplaceDemo(){
var r, re; // 聲明變量。
var ss = "The man hit the ball with the bat.n";
ss += "while the fielder caught the ball with the glove.";
re = /The/g; // 創(chuàng)建正則表達(dá)式模式。
r = ss.replace(re, "A"); // 用 "A" 替換 "The"。
return(r); // 返回替換后的字符串。
}
另外, replace 方法也可以替換模式中的子表達(dá)式。 下面的范例演示了交換字符串中的每一對(duì)單詞:
function ReplaceDemo(){
var r, re; // 聲明變量。
var ss = "The rain in Spain falls mainly in the plain.";
re = /(S+)(s+)(S+)/g; // 創(chuàng)建正則表達(dá)式模式。
r = ss.replace(re, "$3$2$1"); // 交換每一對(duì)單詞。
return(r); // 返回結(jié)果字符串。
}
下面的示例(在 JScript 5.5 及更新版本中執(zhí)行)執(zhí)行的是從華氏到攝氏的轉(zhuǎn)換,它演示了使用函數(shù)作為 replaceText。要想知道該函數(shù)是如何工作的,傳遞一個(gè)包含數(shù)值的字符串,數(shù)值后要緊跟 "F" (例如 "Water boils at 212")。
復(fù)制代碼 代碼如下:
function f2c(s) {
var test = /(d+(.d*)?)Fb/g; // 初始化模式。
return(s.replace
(test,
function($0,$1,$2) {
return((($1-32) * 5/9) + "C");
}
)
);
}
document.write(f2c("Water freezes at 32F and boils at 212F."));
js居然不提供replaceAll方法,用for循環(huán)又有效率問題,給你一個(gè)正則表達(dá)式的解決方案
js 代碼
復(fù)制代碼 代碼如下:
String.prototype.replaceAll = function(s1,s2){
return this.replace(new RegExp(s1,"gm"),s2);
}
方法: string.replace(new RegExp(oldString,"gm"),newString))
gm g=global, m=multiLine , 大致上方法就是這樣的,可以實(shí)現(xiàn)替換全部指定字串
另一個(gè)簡(jiǎn)單的驗(yàn)證JS的方法:
在瀏覽器地址欄輸入
javascript:alert("abcabcabc".replace(new RegExp("a","gm"),"ad"))
這樣比較省事 ;) ,不知道多行的會(huì)不會(huì)很方便
orgStr.replace(new RegExp(findStr, 'g'), replaceStr)
應(yīng)該就可以替換所有的了
如果不用正則表達(dá)式
orgStr.replace(findStr, replaceStr)只能替換第一個(gè)
您可能感興趣的文章:
- 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ū)別說明
- 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使用正則實(shí)現(xiàn)ReplaceAll全部替換的方法
- js字符串替換所有的指定字符或文字(推薦replaceAll方法)
- JS中實(shí)現(xiàn)replaceAll的方法(實(shí)例代碼)
- Flex 字符串ReplaceAll使用說明
- JavaScript中使用replace結(jié)合正則實(shí)現(xiàn)replaceAll的效果
相關(guān)文章
詳解Webpack如何引入CDN鏈接來優(yōu)化編譯后的體積
這篇文章主要介紹了詳解Webpack如何引入CDN鏈接來優(yōu)化編譯后的體積,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
原生JavaScript實(shí)現(xiàn)Tooltip浮動(dòng)提示框特效
這篇文章主要為大家詳細(xì)介紹了原生JavaScript設(shè)計(jì)和實(shí)現(xiàn)Tooltip浮動(dòng)提示框特效,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
終于解決了IE8不支持?jǐn)?shù)組的indexOf方法
今天,測(cè)試報(bào)過來一個(gè)js bug, 在IE8下有個(gè)js錯(cuò)誤,但是在其它瀏覽器下(Firefox, Chrome, IE9)下面都很正常。后來調(diào)試發(fā)現(xiàn)原因是在IE8下,js數(shù)組沒有indexOf方法。2013-04-04
JS重寫Date函數(shù)以及兼容IOS系統(tǒng)
這篇文章主要介紹了JS重寫Date函數(shù)以及兼容IOS系統(tǒng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
JS實(shí)現(xiàn)為動(dòng)態(tài)創(chuàng)建的元素添加事件操作示例
這篇文章主要介紹了JS實(shí)現(xiàn)為動(dòng)態(tài)創(chuàng)建的元素添加事件操作,涉及javascript頁面元素動(dòng)態(tài)添加及事件響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
JavaScript代碼實(shí)現(xiàn)txt文件的上傳預(yù)覽功能
本篇文章給大家介紹了JavaScript代碼實(shí)現(xiàn)txt文件的上傳預(yù)覽功能,文字代碼相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友參考下吧2018-03-03
javascript簡(jiǎn)單實(shí)現(xiàn)表格行間隔顯示顏色并高亮顯示
表格行間隔顯示顏色并實(shí)現(xiàn)高亮顯示,這種效果大家都有見到過吧,下面就為大家詳細(xì)介紹下,需要的朋友可不要錯(cuò)過2013-11-11
JS實(shí)現(xiàn)無縫循環(huán)marquee滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)無縫循環(huán)marquee滾動(dòng)效果,兼容IE, FireFox, Chrome,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05

