我有一個正則表達式,比如說/url.com\/([A-Za-z]+)\.html/
,我想用new string $1: f($1)
替換它,也就是說,用一個帶有兩個插值的常量字符串,捕獲的字符串和函數捕獲的字符串。
在JavaScript中這樣做的最好方法是什麼? '最好'意味着(1)最少容易出錯,(2)空間和速度最有效,(3)最適合於JavaScript的慣用方式,特別強調#3。
我有一個正則表達式,比如說/url.com\/([A-Za-z]+)\.html/
,我想用new string $1: f($1)
替換它,也就是說,用一個帶有兩個插值的常量字符串,捕獲的字符串和函數捕獲的字符串。
在JavaScript中這樣做的最好方法是什麼? '最好'意味着(1)最少容易出錯,(2)空間和速度最有效,(3)最適合於JavaScript的慣用方式,特別強調#3。
replace
方法可以take a function as the replacement parameter。
例如:
str.replace(/regex/, function(match, group1, group2, index, original) {
return "new string " + group1 + ": " + f(group1);
});
.replace()
花費的替換功能,像這樣:
var newStr = string.replace(/url.com\/([A-Za-z]+)\.html/, function(all, match) {
return match + " something";
});
你可以,但是你想轉換的結果,只是返回任何你想要的比賽是在那個回調中。 You can test it out here。
當使用String.replace
時,可以使用supply a callback function作爲替換參數而不是字符串,並創建自己的非常自定義的返回值。
'foo'.replace(/bar/, function (str, p1, p2) {
return /* some custom string */;
});