我的文字看起来像这样:

action=addItem&siteId=4&lang_locale=en_US&country=US&catalogId=1&productId=417689&displaySize=7&skuSize=2194171&qty=1&pil=7&psh=had+AIRJRnjbp7+rGivIKg00


我想替换“ psh”的值。有时它可能不是最后一个值(后跟&something=else)。

我尝试过执行以下代码行:


var text = text.replace(/&psh=.*(?=&|$)/, "&psh=" + data.psh);
var text = text.replace(/&psh=.*(?=[&|$]+)/, "&psh=" + data.psh);
var text = text.replace(/(?:&psh=)(.*)(?=[&|$]+)/, data.psh);


它们都不适用于两种情况。使用this site检查正则表达式。

最佳答案

这应该工作:

var text = text.replace(/&psh=[^&]*/, "&psh=" + data.psh);


[^&]*匹配由除&之外的任何字符组成的任何长度的字符串,因此匹配将持续到字符串结尾或直到(但不包括)下一个&(以先到者为准)。

10-06 04:04