我的文字看起来像这样:
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);
[^&]*
匹配由除&
之外的任何字符组成的任何长度的字符串,因此匹配将持续到字符串结尾或直到(但不包括)下一个&
(以先到者为准)。