關於正規表示式中replace的第二個引數

2021-09-14 04:02:13 字數 2106 閱讀 7957

string.replace(searchvalue,newvalue)

searchvalue

必須。規定子字串或要替換的模式的 regexp 物件。請注意,如果該值是乙個字串,則將它作為要檢索的直接量文字模式,而不是首先被轉換為 regexp 物件。

newvalue

必需。乙個字串值。規定了替換文字或生成替換文字的函式。

string

乙個新的字串,是用 replacement 替換了 regexp 的第一次匹配或所有匹配之後得到的。

這個引數比較好理解,要麼是字串要麼是正規表示式。上文說的「請注意,如果該值是乙個字串,則將它作為要檢索的直接量文字模式,而不是首先被轉換為 regexp 物件。」,意思是'/abc/gi'不會被解析為正則物件,即使它跟正則寫法一樣。

本文不說第乙個引數,只說第二個引數。

這個引數要麼是普通字串,要麼是正則替換表示式字串,說來說去都是字串,要麼是乙個函式。

正則替換表示式

特殊替換字元:

字元 替換文字

$& 與正則相匹配的字串

$` 匹配字串左邊的字元

$』 匹配字串右邊的字元

$1,$2,$,3,…,$n 匹配結果中對應的分組匹配結果

$& 適用於沒有子表示式的情況

var sstr='討論一下正規表示式中的replace的用法';

sstr.replace(/正規表示式/,'《$&》');

// 得到:"討論一下《正規表示式》中的replace的用法"

匹配字串左邊的所有字元

var sstr='討論一下正規表示式中的replace的用法';

sstr.replace(/正規表示式/,'《$`》');

// 得到:"討論一下《討論一下》中的replace的用法"

匹配字串右邊的所有字元,注意,既然 $' 有單引號,那麼外面的引號必須雙引號,如果不可以雙引號,只能把 $' 的單引號轉義。

var sstr='討論一下正規表示式中的replace的用法';

sstr.replace(/正規表示式/,"《$'》");

// 得到:"討論一下《中的replace的用法》中的replace的用法"

$1, $2, $3, …, $n

依次匹配子表示式

var sstr='討論一下正規表示式中的replace的用法';

sstr.replace(/(正則)(.+?)(式)/,"《$1》$2<$3>");

// 得到:"討論一下《正則》表達《式》中的replace的用法"

先看arguments的用法:

var sstr='討論一下正規表示式中的replace的用法';

sstr.replace(/(正則).+?(式)/,function() );

// ["正規表示式", "正則", "式", 4, "討論一下正規表示式中的replace的用法"]

引數分別為:

如果加上全域性識別符號g,則是:

var sstr='討論一下正規表示式中的replace的正規表示式用法';

sstr.replace(/(正則).+?(式)/g,function() );

// ["正規表示式", "正則", "式", 4, "討論一下正規表示式中的replace的正規表示式用法"]

// ["正規表示式", "正則", "式", 19, "討論一下正規表示式中的replace的正規表示式用法"]

也就是說,arguments是當前函式的內建屬性,指代當前匹配的引數偽陣列。arguments[0]就是當前匹配的字串。

var sstr='討論一下正規表示式中的replace的正規表示式用法';

sstr.replace(/(正則).+?(式)/g,function() );

// 正規表示式

// 正規表示式

// "討論一下正規表示式a中的replace的正規表示式a用法"

函式做引數的優勢,在於可以對arguments做更複雜的操作,而不像只是乙個字串引數那麼簡陋。當然,arguments不是必須用,可以不用。

參考: 

replace 結合正規表示式

為了簡化替換字串的操作,ecmscript提供了replace 方法,這個方法提供兩個引數,第乙個引數可以使乙個字串或regexp物件,第二個引數可以是乙個字串或者乙個函式。基礎知識 匹配整個模式的子字串。與regexp.lastmatch的值相同 匹配的子字串之前的字串,與regexp.leftc...

使用正規表示式Replace

使用regex.replace 方法可以剔除字串中的html 例如在text資料型別的資料庫字段,中存放的字串格式如下 一 學術研究課題 如果這段字串不經過處理顯示出來就是加粗的字型,如下 一 學術研究課題 如果現在想更改這個字串顯示的格式,將字型大小設定成13px,顏色設定成黑色。那要怎麼做?在這...

使用正規表示式Replace

使用regex.replace 方法可以剔除字串中的html 例如在text資料型別的資料庫字段,中存放的字串格式如下 一 學術研究課題 如果這段字串不經過處理顯示出來就是加粗的字型,如下 一 學術研究課題 如果現在想更改這個字串顯示的格式,將字型大小設定成13px,顏色設定成黑色。那要怎麼做?在這...