String.prototype.replace()

String.prototype.replace()

replace() 方法返回一個(gè)由替換值(replacement)替換一些或所有匹配的模式(pattern)后的新字符串啊掏。模式可以是一個(gè)字符串或者一個(gè)正則表達(dá)式,替換值可以是一個(gè)字符串或者一個(gè)每次匹配都要調(diào)用的回調(diào)函數(shù)。

const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';

const regex = /dog/gi;

console.log(p.replace(regex, 'ferret'));
// expected output: "The quick brown fox jumps over the lazy ferret. If the ferret reacted, was it really lazy?"

console.log(p.replace('dog', 'monkey'));
// expected output: "The quick brown fox jumps over the lazy monkey. If the dog reacted, was it really lazy?"

語法

str.replace(regexp|substr, newSubStr|function)

參數(shù)

regexp (pattern)

一個(gè)RegExp 對(duì)象或者其字面量腾窝。該正則所匹配的內(nèi)容會(huì)被第二個(gè)參數(shù)的返回值替換掉资厉。

substr (pattern)

一個(gè)將被 newSubStr 替換的 字符串晋被。其被視為一整個(gè)字符串潜秋,而不是一個(gè)正則表達(dá)式恨溜。僅第一個(gè)匹配項(xiàng)會(huì)被替換垃杖。

newSubStr (replacement)

用于替換掉第一個(gè)參數(shù)在原字符串中的匹配部分的字符串男杈。該字符串中可以內(nèi)插一些特殊的變量名。參考下面的使用字符串作為參數(shù)调俘。

function (replacement)

一個(gè)用來創(chuàng)建新子字符串的函數(shù)伶棒,該函數(shù)的返回值將替換掉第一個(gè)參數(shù)匹配到的結(jié)果。參考下面的指定一個(gè)函數(shù)作為參數(shù)彩库。

返回值

一個(gè)部分或全部匹配由替代模式所取代的新的字符串肤无。

描述

該方法并不改變調(diào)用它的字符串本身,而只是返回一個(gè)新的替換后的字符串骇钦。

在進(jìn)行全局的搜索替換時(shí)宛渐,正則表達(dá)式需包含 g 標(biāo)志。

使用字符串作為參數(shù)

替換字符串可以插入下面的特殊變量名:

變量名 代表的值
$$ 插入一個(gè) "$"眯搭。
$& 插入匹配的子串窥翩。
$` 插入當(dāng)前匹配的子串左邊的內(nèi)容。
$' 插入當(dāng)前匹配的子串右邊的內(nèi)容鳞仙。
$n 假如第一個(gè)參數(shù)是 RegExp對(duì)象寇蚊,并且 n 是個(gè)小于100的非負(fù)整數(shù),那么插入第 n 個(gè)括號(hào)匹配的字符串棍好。提示:索引是從1開始

指定一個(gè)函數(shù)作為參數(shù)

你可以指定一個(gè)函數(shù)作為第二個(gè)參數(shù)仗岸。在這種情況下允耿,當(dāng)匹配執(zhí)行后,該函數(shù)就會(huì)執(zhí)行扒怖。 函數(shù)的返回值作為替換字符串右犹。 (注意:上面提到的特殊替換參數(shù)在這里不能被使用。) 另外要注意的是姚垃,如果第一個(gè)參數(shù)是正則表達(dá)式念链,并且其為全局匹配模式,那么這個(gè)方法將被多次調(diào)用积糯,每次匹配都會(huì)被調(diào)用掂墓。

下面是該函數(shù)的參數(shù):

變量名 代表的值
match 匹配的子串。(對(duì)應(yīng)于上述的$&看成。)
p1,p2, ... 假如replace()方法的第一個(gè)參數(shù)是一個(gè)RegExp 對(duì)象君编,則代表第n個(gè)括號(hào)匹配的字符串。(對(duì)應(yīng)于上述的1川慌,2等吃嘿。)例如,如果是用 /(\a+)(\b+)/ 這個(gè)來匹配梦重,p1 就是匹配的 \a+兑燥,p2 就是匹配的 \b+。
offset 匹配到的子字符串在原字符串中的偏移量琴拧。(比如降瞳,如果原字符串是 'abcd',匹配到的子字符串是 'bc'蚓胸,那么這個(gè)參數(shù)將會(huì)是 1)
string 被匹配的原字符串挣饥。
NamedCaptureGroup 命名捕獲組匹配的對(duì)象

(精確的參數(shù)個(gè)數(shù)依賴于 replace() 的第一個(gè)參數(shù)是否是一個(gè)正則表達(dá)式(RegExp)對(duì)象,以及這個(gè)正則表達(dá)式中指定了多少個(gè)括號(hào)子串沛膳,如果這個(gè)正則表達(dá)式里使用了命名捕獲扔枫, 還會(huì)添加一個(gè)命名捕獲的對(duì)象)

下面的例子將會(huì)使 newString 變成 'abc - 12345 - #$*%':

function replacer(match, p1, p2, p3, offset, string) {
  // p1 is nondigits, p2 digits, and p3 non-alphanumerics
  return [p1, p2, p3].join(' - ');
}
var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
console.log(newString);  // abc - 12345 - #$*%

示例

在 replace() 中使用正則表達(dá)式

在下面的例子中,replace()中使用了正則表達(dá)式及忽略大小寫標(biāo)示锹安。

var str = 'Twas the night before Xmas...';
var newstr = str.replace(/xmas/i, 'Christmas');
console.log(newstr);  // Twas the night before Christmas...

交換字符串中的兩個(gè)單詞

var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1");
// Smith, John
console.log(newstr);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末短荐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子八毯,更是在濱河造成了極大的恐慌搓侄,老刑警劉巖瞄桨,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件话速,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡芯侥,警方通過查閱死者的電腦和手機(jī)泊交,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門乳讥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人廓俭,你說我怎么就攤上這事云石。” “怎么了研乒?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵汹忠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我雹熬,道長(zhǎng)宽菜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任竿报,我火速辦了婚禮铅乡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烈菌。我一直安慰自己阵幸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布芽世。 她就那樣靜靜地躺著挚赊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪济瓢。 梳的紋絲不亂的頭發(fā)上咬腕,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音葬荷,去河邊找鬼涨共。 笑死,一個(gè)胖子當(dāng)著我的面吹牛宠漩,可吹牛的內(nèi)容都是我干的举反。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼扒吁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼火鼻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起雕崩,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤魁索,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后盼铁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粗蔚,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年饶火,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鹏控。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片致扯。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖当辐,靈堂內(nèi)的尸體忽然破棺而出抖僵,到底是詐尸還是另有隱情,我是刑警寧澤缘揪,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布耍群,位于F島的核電站,受9級(jí)特大地震影響找筝,放射性物質(zhì)發(fā)生泄漏世吨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一呻征、第九天 我趴在偏房一處隱蔽的房頂上張望耘婚。 院中可真熱鬧,春花似錦陆赋、人聲如沸沐祷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赖临。三九已至,卻和暖如春灾锯,著一層夾襖步出監(jiān)牢的瞬間兢榨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工顺饮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吵聪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓兼雄,卻偏偏與公主長(zhǎng)得像吟逝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赦肋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,233評(píng)論 0 4
  • Ecmascript:15.5.4.11 首先根據(jù)以下步驟設(shè)定string: 以this 值作為參數(shù)調(diào)用Check...
    何幻閱讀 393評(píng)論 0 0
  • ??引用類型的值(對(duì)象)是引用類型的一個(gè)實(shí)例佃乘。 ??在 ECMAscript 中囱井,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)...
    霜天曉閱讀 1,054評(píng)論 0 1
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,196評(píng)論 0 3
  • 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的 JavaScript 類型 使用基本類型和基本包裝類型 引用類型的...
    悶油瓶小張閱讀 681評(píng)論 0 0