標籤:console 括弧匹配 多次 str 它的 bsp button fse exp
replace()
方法返回一個由替換值替換一些或所有匹配的模式後的新字串。模式可以是一個字串或者一個Regex, 替換值可以是一個字串或者一個每次匹配都要調用的函數。
注意:原字串不會改變。
文法
str.replace(regexp|substr, newSubStr|function)
參數
-
regexp
(pattern)
-
一個
RegExp
對象或者其字面量。該正則所匹配的內容會被第二個參數的傳回值替換掉。
-
substr
(pattern)
-
一個要被
newSubStr
替換的
字串
。其被視為一整個字串,而不是一個Regex。僅僅是第一個匹配會被替換。
-
newSubStr
(replacement)
-
用於替換掉第一個參數在原字串中的匹配部分的
字串
。該字串中可以插入一些特殊的變數名。參考下面的使用字串作為參數。
-
function
(replacement)
-
一個用來建立新子字串的函數,該函數的傳回值將替換掉第一個參數匹配到的結果。參考下面的指定一個函數作為參數。
傳回值
一個部分或全部匹配由替代模式所取代的新的字串。
描述
該方法並不改變調用它的字串本身,而只是返回一個新的替換後的字串。
在進行全域的搜尋替換時,Regex需包含 g
標誌。
使用字串作為參數
替換字串可以插入下面的特殊變數名:
變數名 |
代表的值 |
$$ |
插入一個 "$"。 |
$& |
插入匹配的子串。 |
$` |
插入當前匹配的子串左邊的內容。 |
$‘ |
插入當前匹配的子串右邊的內容。 |
$n |
假如第一個參數是 RegExp 對象,並且 n 是個小於100的非負整數,那麼插入第 n 個括弧匹配的字串。 |
指定一個函數作為參數
你可以指定一個函數作為第二個參數。在這種情況下,當匹配執行後, 該函數就會執行。 函數的傳回值作為替換字串。 (注意: 上面提到的特殊替換參數在這裡不能被使用。) 另外要注意的是, 如果第一個參數是Regex, 並且其為全域匹配模式, 那麼這個方法將被多次調用, 每次匹配都會被調用。
下面是該函數的參數:
變數名 |
代表的值 |
match |
匹配的子串。(對應於上述的$&。) |
p1,p2, ... |
假如replace()方法的第一個參數是一個RegExp 對象,則代表第n個括弧匹配的字串。(對應於上述的$1,$2等。) |
offset |
匹配到的子字串在原字串中的位移量。(比如,如果原字串是“abcd”,匹配到的子字串是“bc”,那麼這個參數將是1) |
string |
被匹配的原字串。 |
(精確的參數個數依賴於replace()的第一個參數是否是一個Regex對象, 以及這個Regex中指定了多少個括弧子串。)
下面的例子將會使 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 - #$*%
例子2:
function camelize(str) {
return str.replace(/-+(.)?/g,function(match,chr){
return chr ? chr.toUpperCase():‘‘
})
}
camelize(‘background-color‘)
"backgroundColor"
js小知識-replace的回呼函數