在Request.ServerVariables(“HTTP_REFERER”)中使用正则表达式

时间:2014-07-10 03:46:55

标签: regex asp-classic

网址例如是:http://www.somedomain.com/24-sale.htm

这项工作很好:

Response.Redirect _
    Replace(
        Request.ServerVariables("HTTP_REFERER"), _
        "24" & "-sale.htm", _
        "contact_confirm.htm" _
    )
'if there the message is sent return 1 to flash

但是......在24号的位置,可以有1到999之间的任何数字 试着在“24”的地方放置正则表达式,如下所示:

Response.Redirect _
    Replace( _
        Request.ServerVariables("HTTP_REFERER"),
        "^([0-9]{1,3})$" & "-sale.htm",
        "contact_confirm.htm"
     )
'if there the message is sent return 1 to flash

这不适用于......; - (

任何人都知道正确的语法吗? 花了几百个小时来搞清楚......

经过大量的试验和错误后,我最终得到了这个:

Dim refererStr:refererStr = Request.ServerVariables(“HTTP_REFERER”)

Dim regex:设置正则表达式=新的RegExp

RegEx.Pattern = RegEx.replace(“^([1-9] {1,3})$”,“”)

Dim redirectTo:redirectTo = Replace(“refererStr”),“ - sale.htm”,“contact_confirm.htm”)

Response.Redirect redirectTo)'如果有消息发送,则返回1到flash

但没有工作: - (

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

VBScript的Replace函数不接受正则表达式作为参数,必须使用RegExp对象来执行正则表达式操作。

此处记录了

RegExphttp://msdn.microsoft.com/en-us/library/ms974570.aspx)和此处(http://www.regular-expressions.info/vbscript.html

你想要这样的东西:

Dim refererStr : refererStr = Request.ServerVariables("HTTP_REFERER")

Dim regex : Set regex = New RegExp
regex.Pattern = "^([1-9]{1,3})$"

Dim redirectTo : redirectTo = regex.Replace( refererStr, "-sale.html" )

Response.Redirect redirectTo