需要帮助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');
如果MAXWIDTH
和MAXHEIGHT
总是以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*(\+MAXHEIGHT:)\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);