Function urlStrim(cTxt)
Dim objRegExp
Set objRegExp = New RegExp
objRegExp.Pattern = "\[(.*?)\]"
objRegExp.IgnoreCase = True
objRegExp.Global = True
urlStrim = objRegExp.Replace(cTxt,"<a href=$1>$1</a>")
Set objRegExp = Nothing
End Function
Jädrigt bra fråga.
Eftersom du vill köra server.urlencode() på $1, men gör du det så ersätts ju $1 också, och därmed försvinner ju den parametern och regexp förstår inte vad det är för något.
Man skulle kanske på något sätt kunna få fram matchningar som bara hittar det inom <a href="blabla">, men det vet jag inte hur man gör.
Function urlStrim(cTxt)
Dim objRegExp,strTxt
strTxt=cTxt
Set objRegExp = New RegExp
objRegExp.Pattern = "\[(.*?)\]"
objRegExp.IgnoreCase = True
objRegExp.Global = True
for each objMatch in objRegExp.Execute(strTxt)
strTxt = Replace(strTxt,objMatch.Value,"<a href=""" & server.urlencode(objMatch.Submatches(0)) & """>" & objMatch.Submatches(0) & "</a>")
next
Set objRegExp = Nothing
urlStrim=strTxt
End Function
submatches... självklart när man ser det, men inte lätt om man inte sett det tidigare
Men nu när man läser VBscript dokumentationen lite tydligare hittar man självklart detta:
Matches pattern and captures the match. The captured match can be retrieved from the resulting Matches collection, using the SubMatches collection in VBScript or the $0…$9 properties in JScript. To match parentheses characters ( ), use '\(' or '\)'.