用于查找单词的正则表达式以&开头。并以&结尾

时间:2012-06-28 13:17:54

标签: regex regex-negation

我想替换以&开头的网址中的单词并以&结尾,但留下一个&amp ;. 例如:url?&name=test&id=2 输出应该用&name=test替换&newname=againtest i.e url?&newname=againtest&id=2 请帮我使用JS

4 个答案:

答案 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 expressionsString.replace