2011-05-24 43 views
1

需要用正則表達式JavaScript的幫助,我試過幾個,但沒有奏效需要用正則表達式幫助在javascript來代替字符串模式

我想替換下面的字符串是一個網址。值200,400是在下面的字符串

url=http://www.test.com?debug=true&MAXWIDTH:200+MAXHEIGHT:400

與900的動態,900總是與結果應該是

正則表達式後,我想要的網址字符串包含以下值

url=http://www.test.com/?debug=true&MAXWIDTH:900+MAXHEIGHT:900 
+0

應該通過'http //'是'HTTP://'? – 2011-05-24 19:47:21

+0

對不起火箭,那是一個錯字錯誤.. – kobe 2011-05-24 19:47:48

+0

感謝所有花時間回答我的問題的人,真的很感謝。 – kobe 2011-05-24 20:23:53

回答

3
var replaceMaxWidthAndHeight = function(str, newWidthAndHeight) { 
    var i=0; 
    return str.replace(/\s*(MAXWIDTH|MAXHEIGHT)\s*:\s*(\d+)\s*/g, function(s, m1) { 
    return m1 + ':' + newWidthAndHeight[i++]; 
    }); 
}; 

var s1 = "url=http://www.test.com/?debug=true&MAXWIDTH:200+MAXHEIGHT: 400"; 
var s2 = replaceMaxWidthAndHeight(s1, [900, 900]); 
s2; // => "url=http://www.test.com/?debug=true&MAXWIDTH:900+MAXHEIGHT:900" 
s2 = replaceMaxWidthAndHeight(s1, [10, 20]); 
s2; // => "url=http://www.test.com/?debug=true&MAXWIDTH:10+MAXHEIGHT:20" 
+0

@maerics,我們可以檢查MAXWIDTH和MAXHEIGHT,它應該跟着那些字符串,我有很多值的url,我不想全部替換 – kobe 2011-05-24 19:49:01

+0

我想在MAXWIDTH上做一個模式:900 + MAXHEIGHT:900然後替換.. – kobe 2011-05-24 19:49:39

+0

@maerics,你能解釋一下你的代碼嗎,我不明白[10,20] – kobe 2011-05-24 19:53:39

1

如果MAXWIDTHMAXHEIGHTALW ays出現在網址爲MAXWIDTH:200+MAXHEIGHT:400,那麼這個正則表達式將工作。

var string = "url=http://www.test.com?debug=true&MAXWIDTH:200+MAXHEIGHT:400"; 
string.replace(/MAXWIDTH:\d*\+MAXHEIGHT:\d*/, 'MAXWIDTH:900+MAXHEIGHT:900'); 
+0

@ rockets,非常感謝這是我想要的,我想要替換它,如果它發現maxwidth和maxheight .. – kobe 2011-05-24 19:52:07

1

更換

(url=http://www.test.com\?debug=true&MAXWIDTH:)\d*(\+MAXHEIGHT:)\d* 

$1900$2900 

(爲$ 1和$ 2到匹配組反向引用

編輯:感謝火箭

string.replace(/(url=http:\/\/www.test.com\?debug=true&MAXWIDTH:)\d*(\+MAXHEIGH‌​T:)\d*/, '$1900$2900') 
+1

也許你應該把代碼放在你的答案...'string.replace(/(url = http:\ /\/www.test.com\?debug=true&MAXWIDTH:)\d*(\+MAXHEIGHT:)\d*/,'$ 1900 $ 2900')' – 2011-05-24 19:55:37

2

如果你想取代它忽略了順序,或者兩者都存在:

str = str.replace(/(MAXWIDTH:|MAXHEIGHT:)\d+/g, '$1900'); 
1

或者更一般的解決方案:

function replaceValue(str, label, value) { 
    rX = new RegExp("\\s*" + label + "\\s*:\\s*(\\d+)\\s*"); 
    return(str.replace(rX, label + ":" + value); 
} 

url = replaceValue(url, "MAXHEIGHT", 900); 
url = replaceValue(url, "MAXWIDTH", 900);