我想替换 url 中以 & 开头并以 & 结尾的单词,但留下一个 &。例如:url?&name=test&id=2
输出应替换&name=test
为&newname=againtest i.e url?&newname=againtest&id=2
Please help me using JS
问问题
278 次
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
要了解更多信息,请参阅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 回答