2014-03-31 80 views
0

假設你有這個字符串:url?param1=something&param2=something&param3=something其中也可以只有url?param1=somethingJavascript正則表達式替換組

你怎麼會做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

試試這個:

var string = 'url?param1=something&param2=something&param3=something'; 
alert(string.replace(/(param1)([^&]+)/, '$1=newparam1')); 
如果你要設置多個參數的值相同

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

添加另一個捕獲組...

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

嘿感謝,你的例子給我''url?param1 = anotherthing「'而不是完整的url,任何小費? – JorgeeFG

+0

哎呀,我沒注意你的reg exp,應該是'/(param1 =)([^ &]*)/;' – epascarello