需要帮助javascript中的正则表达式来替换字符串模式

需要有关正则表达式javascript的帮助,我尝试了一些但没有工作

我想替换以下字符串,这是一个url。 值200,400在下面的字符串中是动态的

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

总是900,900,结果应该是

在正则表达式后我想要url字符串包含以下值

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

 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" 

如果你想要忽略订单或两者都在那里替换它:

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

如果MAXWIDTHMAXHEIGHT 总是MAXWIDTH:200+MAXHEIGHT:400出现在url中,则此正则表达式将起作用。

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

更换

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

 $1900$2900 

($ 1和$ 2对匹配组的反向引用

编辑:感谢Rocket

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

或者更通用的解决方案:

 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);