我想替换以&开头的网址中的单词并以&结尾,但留下一个&amp ;.
例如:url?&name=test&id=2
输出应该用&name=test
替换&newname=againtest i.e url?&newname=againtest&id=2
请帮我使用JS
答案 0 :(得分:3)
更简洁的方法是替换被&
包围的部分,而不是用它替换&
。 Lookaround断言在这里有所帮助:
替换
(?<=&)name=test(?=&)
与
newname=againtest
这也可以变得更加健壮:
(?<=[&?])name=test(?=&|$)
即使在以下示例中也匹配:
url?name=test
url?name=test&foo=bar
url?foo=bar&name=test
答案 1 :(得分:0)
您需要将^([^&]*)(&[^&]+)(&.*)$
替换为$1NEWSTRING$3
请参阅测试here。
答案 2 :(得分:0)
尝试以下正则表达式:
^\w+\?(&\w+=\w+).*
<强>解释强>
^
行首
\w+
之前的第一个字?
\?
逃脱? char因为它在正则表达式中具有特殊含义。我们需要文字吗? char这里
(&\w+=\w+)
要在&符号“&amp; char”之后替换的键值对组
.*
您可以将我们拥有的goup替换为您要替换的值。
答案 3 :(得分:0)
var url = 'url?&name=test&id=2';
var regex = /(.*\?&)name=([^&]*)(&.*)/;
var replacementPattern = '$1newname=again$2$3';
var newUrl = url.replace(regex, replacementPattern);
console.log(newUrl);
以上输出:
url?&newname=againtest&id=2
<强> jsFiddle Demo 强>
要了解详情,请参阅JavaScript regular expressions和String.replace。