2010-11-14 65 views
2

我有一個正則表達式,比如說/url.com\/([A-Za-z]+)\.html/,我想用new string $1: f($1)替換它,也就是說,用一個帶有兩個插值的常量字符串,捕獲的字符串和函數捕獲的字符串。

在JavaScript中這樣做的最好方法是什麼? '最好'意味着(1)最少容易出錯,(2)空間和速度最有效,(3)最適合於JavaScript的慣用方式,特別強調#3。

回答

4

.replace()花費的替換功能,像這樣:

var newStr = string.replace(/url.com\/([A-Za-z]+)\.html/, function(all, match) { 
    return match + " something"; 
}); 

你可以,但是你想轉換的結果,只是返回任何你想要的比賽是在那個回調中。 You can test it out here

5

當使用String.replace時,可以使用supply a callback function作爲替換參數而不是字符串,並創建自己的非常自定義的返回值。

'foo'.replace(/bar/, function (str, p1, p2) { 
    return /* some custom string */; 
});