主頁(yè) > 知識(shí)庫(kù) > js中string之正則表達(dá)式replace方法詳解

js中string之正則表達(dá)式replace方法詳解

熱門(mén)標(biāo)簽:Linux服務(wù)器 Mysql連接數(shù)設(shè)置 團(tuán)購(gòu)網(wǎng)站 銀行業(yè)務(wù) 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 電子圍欄 服務(wù)器配置 阿里云

replace方法是javascript涉及到正則表達(dá)式中較為復(fù)雜的一個(gè)方法,嚴(yán)格上說(shuō)應(yīng)該是string對(duì)象的方法。只不過(guò)牽扯到正則的時(shí)候比較多一些。需要我們靈活的使用。

語(yǔ)法: stringObj.replace(regexp/substr,replacement);

第一個(gè)參數(shù):必需。字符串中要替換的子串或正則RexExp;

第二個(gè)參數(shù):必需,一個(gè)字符串值,規(guī)定了替換文本或生成替換文本的函數(shù)。

返回值:注意它的返回值是一個(gè)新的字符串,并沒(méi)有更改原有字符串,是用 replacement 替換了 regexp 的第一次匹配或所有匹配之后得到的。

所以根據(jù)它的參數(shù)的不同分為很多種情況,以下一一對(duì)各種情況加以分析:

NO.1 兩個(gè)參數(shù)都是字符串

var str1 = '這是一段原始文本,需要替換的內(nèi)容"這要替換"!';
var newStr = str1.replace('這要替換','need replace');
console.log( newStr );  //輸出:  這是一段原始文本,需要替換的內(nèi)容"need replace"!

上面的例子中第二個(gè)參數(shù)字符串'need replace',替換掉了第一個(gè)參數(shù)字符串'這要替換'。這是最簡(jiǎn)單的一種形式。

NO.2 第一個(gè)參數(shù)是正則,第二個(gè)參數(shù)是字符串

var str2 = '這是一段原始文本,需要替換的內(nèi)容"ac這要替換bb"!';
var newStr = str2.replace( /([a-z])+/g,'qqq' );
console.log( newStr );  //輸出:  這是一段原始文本,需要替換的內(nèi)容"qqq這要替換qqq"!

上面的例子字符串'qqq',替換了正則匹配的內(nèi)容。如果 regexp 具有全局標(biāo)志 g,那么 replace() 方法將替換所有匹配的子串。否則,它只替換第一個(gè)匹配子串。

NO.3 第一個(gè)參數(shù)是正則,第二個(gè)參數(shù)是帶$符的字符串

var str3 = '這是一段原始文本,"3c這要替換4d"!';
var newStr = str3.replace( /([0-9])([a-z])/g,"$1" );
console.log( newStr );  //輸出:  這是一段原始文本,"3這要替換4"!';

上面的例子,$1表示regexp中的第一個(gè)子表示即([0-9])匹配單個(gè)數(shù)字,同理若是$2則表示第二個(gè)子表示即([a-z]);所以,'3c'這個(gè)匹配到的整體被第一個(gè)子表示說(shuō)表示的'3'替換,'4d'被第一個(gè)子表示匹配的數(shù)字'4'所替換。其他幾個(gè)同理可得:

(/([0-9])([a-z])/g,”$2″)—>////輸出: 這是一段原始文本,”c這要替換d”!'; (3c和4d被相應(yīng)的第二個(gè)子表示匹配出來(lái)的c和d替換)(/([0-9])([a-z])/g,”$'”)—>////輸出: 這是一段原始文本,”這要替換d”!這要替換”!”!'; (3c被3c右側(cè)文本替換,4d右側(cè)是”!替換,所以出現(xiàn)倆次)

NO.4 第一個(gè)參數(shù)是正則,第二個(gè)參數(shù)函數(shù)

var str4 = '這是一段原始文本,需要替換的內(nèi)容"aa這要bbb替換ccccc"!';
var newStr = str4.replace( /[a-z]+/g,function ($0){
  var str = '';
  for (var i = 0; i  $0.length; i++) {
    str += '*';
  };
  return str;
} );
console.log( newStr );  //這是一段原始文本,需要替換的內(nèi)容"**這要***替換*****"!

上面的例子函數(shù)的第一個(gè)參數(shù)為匹配的regexp的整體,根據(jù)長(zhǎng)度函數(shù)返回值為相應(yīng)替換的文本;

NO.5 第一個(gè)參數(shù)是正則且有子表達(dá)式,第二個(gè)參數(shù)函數(shù)且?guī)в卸鄠€(gè)參數(shù)

var str5 = '這是一段原始文本,需要替換的內(nèi)容"3c這要替換4d"!';
var newStr = str5.replace( /([0-9])([a-z])/g,function (arg1,arg2,arg3,arg4,arg5){
 console.log( arg1 );
 console.log( arg2 );
 console.log( arg3 );
 console.log( arg4 );
 console.log( arg5 );
} );

輸出:

3c
3
c
17
這是一段原始文本,需要替換的內(nèi)容"3c這要替換4d"!
4d
4
d
23

這是一段原始文本,需要替換的內(nèi)容"3c這要替換4d"!

上面的例子第一個(gè)參數(shù)arg1表示匹配的整體,arg2表示第一個(gè)子表達(dá)式,arg3表示第二個(gè)子表達(dá)式,接下來(lái)的參數(shù)arg4是一個(gè)整數(shù),聲明了表示子匹配在 stringObject 中出現(xiàn)的位置。最后一個(gè)參數(shù)是 stringObject 本身。

以上就是replace方法各種可能的情況。確實(shí)是一個(gè)需要深入理解的方法,不過(guò)確實(shí)也很強(qiáng)大的一個(gè)方法,值得深入研究!

您可能感興趣的文章:
  • String字符串匹配javascript 正則表達(dá)式
  • javascript正則表達(dá)式和字符串RegExp and String(二)
  • javascript正則表達(dá)式和字符串RegExp and String(一)
  • Js 利用正則表達(dá)式和replace函數(shù)獲取string中所有被匹配到的文本(推薦)

標(biāo)簽:蚌埠 萍鄉(xiāng) 衢州 江蘇 棗莊 衡水 廣元 大理

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《js中string之正則表達(dá)式replace方法詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢(xún)

    • 400-1100-266