Javascript正则表达式替换为组

时间:2014-03-31 12:49:48

标签: javascript regex

假设您有这个字符串:url?param1=something&param2=something&param3=something,它也可以只有url?param1=something

如何将param1=something转换为param1=anotherthing

我能够这样做:

var regex = /param1=.*(&|$)/;
var string = 'url?param1=something&param2=something&param3=something';
var newValue = 'anotherthing';
string.replace(regex, 'param1='+newValue);

但是,我不喜欢重复所有搜索字词的事实,所以我问是否可以将所需的模式分组以进行替换,在这种情况下将.*并且仅替换这一点。

例如,说$ 1属于第1组。这是虚构的。

var regex = /param1=(.*)(&|$)/;
var string = 'url?param1=something&param2=something&param3=something';
var newValue = 'anotherthing';
string.replace(regex, $1, newValue);

2 个答案:

答案 0 :(得分:2)

试试这个:

var string = 'url?param1=something&param2=something&param3=something';
alert(string.replace(/(param1)([^&]+)/, '$1=newparam1'));

如果要将多个参数设置为相同的值

alert(string.replace(/(param1|param2)([^&]+)/g, '$1=newparam'));

答案 1 :(得分:0)

添加另一个捕获组...

var regex = /(param1=)([^&]*)/;
var string = 'url?param1=something&param2=something&param3=something';
var newValue = 'anotherthing';
string.replace(regex, "$1" + newValue);