0

我想替换 url 中以 & 开头并以 & 结尾的单词,但留下一个 &。例如:url?&name=test&id=2 输出应替换&name=test&newname=againtest i.e url?&newname=againtest&id=2 Please help me using JS

4

4 回答 4

3

一种更清洁的方法是替换被包围&的部分而不是&用它替换。环顾断言在这里有帮助:

代替

(?<=&)name=test(?=&)

newname=againtest

这也可以变得更加健壮:

(?<=[&?])name=test(?=&|$)

即使在以下示例中也要匹配:

url?name=test
url?name=test&foo=bar
url?foo=bar&name=test
于 2012-06-28T13:34:30.667 回答
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 演示

要了解更多信息,请参阅JavaScript 正则表达式String.replace

于 2012-06-28T13:37:39.717 回答
0

尝试以下正则表达式:

^\w+\?(&\w+=\w+).*

解释:

^线的开始

\w+ 之前的第一句话?

\? 逃脱 ?char 因为它在正则表达式中具有特殊含义。我们需要文字吗?字符在这里

(&\w+=\w+)在&符号“& char”之后要替换的键值对组

.* 之后的任何字符

您可以将我们拥有的组替换为您要替换的值。

于 2012-06-28T13:31:11.217 回答
0

您需要替换^([^&]*)(&[^&]+)(&.*)$$1NEWSTRING$3

请参阅此处的测试。

于 2012-06-28T13:29:11.837 回答