gpt4 book ai didi

javascript - 匹配字符串中的复杂 URL 进行替换

转载 作者:行者123 更新时间:2023-12-03 07:30:58 25 4
gpt4 key购买 nike

我有一个很长的字符串,它基本上包含页面的整个 HTML 代码。

此页面中有一些链接,我需要在这些链接的末尾添加一组参数。

注意:所有页面中的所有 href 都相同。

我设法使用此代码将 URL 提取到变量中(html var 包含我的 html 代码):

var href = html.match(/href="([^"]*)/)[1];

添加额外参数:

var newHref = href+'&n=$ln$&p=$fn$&e=$e$';

出于正则表达式的目的,我使用此函数转义第一个 href :

function escapeRegExp(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|\=\%\:\&]/g,"\\$&");
}

然后我尝试在代码中执行替换:

var reCompletion = new RegExp(escapeRegExp(href),"g");
html.replace(reCompletion, newHref);

当我运行此代码时,它找不到任何与 URL 匹配的内容,并且根本不执行任何替换。

这是我必须填写的 URL 类型:

http://action.mySite.com/trk.php?mclic=P4CAB9542D7F151&urlrv=http%3A%2F%2Fjeu-centerparcs.com%2F%23%21%2F%3Fidfrom%3D8&urlv=517b975385e89dfb8b9689e6c2b4b93d

一旦逃脱:

http\:\/\/action\.mySite\.com\/trk\.php\?mclic\=P4CAB9542D7F151\&urlrv\=http\%3A\%2F\%2Fjeu\-centerparcs\.com\%2F\%23\%21\%2F\%3Fidfrom\%3D8\&urlv\=517b975385e89dfb8b9689e6c2b4b93d

有人对此有任何线索吗?

最佳答案

问题出在替换部分的 $ 符号中:美元必须加倍才能替换为 1 $:

var newHref = (href+'&n=$ln$&p=$fn$&e=$e$').replace(/\$/g, '$$$$');

此外,从 escapeRegExp 中删除不必要的转义符号:

function escapeRegExp(str) {
return str.replace(/[-[\]\/{}()*+?.\\^$|=%:&]/g,"\\$&");
}

这是一个片段:

var html = "More here http://action.mySite.com/trk.php?mclic=P4CAB9542D7F151&urlrv=http%3A%2F%2Fjeu-centerparcs.com%2F%23%21%2F%3Fidfrom%3D8&urlv=517b975385e89dfb8b9689e6c2b4b93d text<br/>And more here http://action.mySite.com/trk.php?mclic=P4CAB9542D7F151&urlrv=http%3A%2F%2Fjeu-centerparcs.com%2F%23%21%2F%3Fidfrom%3D8&urlv=517b975385e89dfb8b9689e6c2b4b93d";
var href = "http://action.mySite.com/trk.php?mclic=P4CAB9542D7F151&urlrv=http%3A%2F%2Fjeu-centerparcs.com%2F%23%21%2F%3Fidfrom%3D8&urlv=517b975385e89dfb8b9689e6c2b4b93d";
var newHref = (href+'&n=$ln$&p=$fn$&e=$e$').replace(/\$/g, '$$$$');
function escapeRegExp(str) {
return str.replace(/[-[\]\/{}()*+?.\\^$|=%:&]/g,"\\$&");
}
var reCompletion = new RegExp(escapeRegExp(href),"g");
html = html.replace(reCompletion, newHref);
document.body.innerHTML = html;

关于javascript - 匹配字符串中的复杂 URL 进行替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35801559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com