2011-05-24 41 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);