Regex 经典asp/vbscript-使用正则表达式修改所有HREF

Regex 经典asp/vbscript-使用正则表达式修改所有HREF,regex,replace,vbscript,asp-classic,Regex,Replace,Vbscript,Asp Classic,在经典ASP(VB脚本)中,我需要通过对当前url进行编码并对其进行预挂起来修改字符串中包含的多个不同的HREF 基本上,我想让所有的href都通过我的redirect.asp,并将现有的href编码传递到新链接中 例如: 现有: <a href="http://www.dairyqueen.com/us-en/Promotions-US/?localechange=1&test=1"> <a href="/redirect.asp?id=123&url=ht

在经典ASP(VB脚本)中,我需要通过对当前url进行编码并对其进行预挂起来修改字符串中包含的多个不同的HREF

基本上,我想让所有的href都通过我的redirect.asp,并将现有的href编码传递到新链接中

例如:

现有:

<a href="http://www.dairyqueen.com/us-en/Promotions-US/?localechange=1&test=1">
<a href="/redirect.asp?id=123&url=http%3A%2F%2Fwww.dairyqueen.com%2Fus-en%2FPromotions-US%2F%3Flocalechange%3D1%26test%3D1">
<a target="_blank" href="/redirect.asp?id=123&url=http%3A%2F%2Fwww.dairyqueen.com%2Fus-en%2FPromotions-US%2F%3Flocalechange%3D1%26test%3D1">

所需结果:

<a href="http://www.dairyqueen.com/us-en/Promotions-US/?localechange=1&test=1">
<a href="/redirect.asp?id=123&url=http%3A%2F%2Fwww.dairyqueen.com%2Fus-en%2FPromotions-US%2F%3Flocalechange%3D1%26test%3D1">
<a target="_blank" href="/redirect.asp?id=123&url=http%3A%2F%2Fwww.dairyqueen.com%2Fus-en%2FPromotions-US%2F%3Flocalechange%3D1%26test%3D1">

请注意,字符串中包含多个不同的href。所有这些都需要更换


此外,我还想在href中添加一个额外的属性,我可能只需使用
replace(myString,“查看以下代码即可:

' <a href="http://www.dairyqueen.com/us-en/Promotions-US/?localechange=1&test=1">
sHtml = "<a href=""http://www.dairyqueen.com/us-en/Promotions-US/?localechange=1&test=1"">"

Set refRepl = GetRef("fnRepl")
With CreateObject("VBScript.RegExp")
    .Global = True
    .MultiLine = True
    .IgnoreCase = True
    .Pattern = "<a([\s\S]*?)href=""([\s\S]*?)""([\s\S]*?)>"
    sResult = .Replace(sHtml, refRepl)
End With

' <a target="_blank" href="/redirect.asp?id=123&url=http%3A%2F%2Fwww.dairyqueen.com%2Fus-en%2FPromotions-US%2F%3Flocalechange%3D1%26test%3D1">
MsgBox sResult

Function fnRepl(sMatch, sSubMatch1, sSubMatch2, sSubMatch3, lPos, sSource)
    fnRepl = "<a" & sSubMatch1 & "target=""_blank"" href=""/redirect.asp?id=123&url=" & EncodeUriComponent(sSubMatch2) & """" & sSubMatch3 & ">"
End Function

Function EncodeUriComponent(sText)
    With CreateObject("htmlfile")
        .ParentWindow.ExecScript (";")
        EncodeUriComponent = .ParentWindow.EncodeUriComponent(sText)
    End With
End Function
'
sHtml=“”
设置refRepl=GetRef(“frepl”)
使用CreateObject(“VBScript.RegExp”)
.Global=True
.MultiLine=True
.IgnoreCase=True
.Pattern=“”
sResult=.Replace(sHtml、refRepl)
以
' 
MsgBox sResult
功能FNREP(sMatch、SSUBMATCH 1、SSUBMATCH 2、SSUBMATCH 3、lPos、sSource)
frepl=“”
端函数
功能组件(sText)
使用CreateObject(“htmlfile”)
.ParentWindow.ExecScript(“;”)
EncodeUriComponent=.ParentWindow.EncodeUriComponent(sText)
以
端函数