在Classic ASP中使用RegEx来查明URL是否具有特定字符串

时间:2012-02-07 21:29:51

标签: regex asp-classic

我必须通过脚本为大约10个不同的URL进行站点重定向,所有URL都包含字符串“entrepreneeloyalty”。我正在尝试编写一些RegEx,以确定URL中是否包含此内容。为此,我正在使用我在另一个问题上找到的函数(using classic asp for regular expression)。问题是当我在网站“http://enterpriseloyaltyjournal.ca/”上测试时没有任何回报。

我在http://gskinner.com/RegExr/http://www.pagecolumn.com/tool/regtest.htm中测试了正则表达式,其正则表达式为“企业忠诚[A-Za-z] *(?=。{1,1})”的匹配结果,在URL字符串中匹配“entrepreneeloyaltyjournal”。但在网站上,“Response.Write(”Results:“& result.Submatches(0))”根本不返回任何内容。说实话,我不知道我是否期待匹配字符串的结果或者是什么,但是根本没有返回任何内容。

当我发表If InStr(Request.ServerVariables("SERVER_NAME"),"enterpriseloyaltyjournal.ca") > 0 Then声明时,它会回来。我的代码如下。非常感谢任何帮助。

Function RegExResults(strTarget, strPattern)

    Set regEx = New RegExp
    regEx.Pattern = strPattern
    regEx.Global = true
    Set RegExResults = regEx.Execute(strTarget)
    Set regEx = Nothing

End Function

'Pass the original string and pattern into the function and get a collection object back'
Set arrResults = RegExResults(Request.ServerVariables("SERVER_NAME"), "enterpriseloyalty[A-Za-z]*(?=\.{1,1})")

'In your pattern the answer is the first group, so all you need is'
For each result in arrResults
    Response.Write("Results: " & result.Submatches(0))
Next

修改

我也在尝试以下但没有结果:

Regex.IgnoreCase = True
Regex.Pattern = "enterpriseloyalty[A-Za-z]*(?=\.{1,1})"
Response.Write("Results:" & Regex.Test(Request.ServerVariables("SERVER_NAME")))

另外,当我说“没有结果”时,我的意思是什么都没有归还。甚至不是“结果:”部分。虽然我没有收到任何类型的错误。

解决

将上述代码更改为:

Dim regex
Set regex = New RegExp
regex.IgnoreCase = True
regex.Pattern = "enterpriseloyalty[A-Za-z]*(?=\.{1,1})"
Response.Write("Results:" & regex.Test(Request.ServerVariables("SERVER_NAME")))

它运作得很好。

1 个答案:

答案 0 :(得分:4)

找到另一种方法,并最终使用:

Dim regex
Set regex = New RegExp
regex.IgnoreCase = True
regex.Pattern = "enterpriseloyalty[A-Za-z]*(?=\.{1,1})"
Response.Write("Results:" & regex.Test(Request.ServerVariables("SERVER_NAME")))