经典 ASP 中的正则表达式,以确定 URL 是不是具有特定字符串

Posted

技术标签:

【中文标题】经典 ASP 中的正则表达式,以确定 URL 是不是具有特定字符串【英文标题】:RegEx in Classic ASP to find out if the URL has a particular string经典 ASP 中的正则表达式,以确定 URL 是否具有特定字符串 【发布时间】:2012-02-29 08:28:54 【问题描述】:

我必须通过脚本对大约 10 个不同的 URL 进行站点重定向,这些 URL 都包含字符串“enterpriseloyalty”。我正在尝试编写一些正则表达式来确定 URL 中是否包含此内容。为此,我使用了我在此处的另一个问题 (using classic asp for regular expression) 中找到的函数。问题是当我在“http://enterpriseloyaltyjournal.ca/”网站上测试它时,什么都没有返回。

我已经在http://gskinner.com/RegExr/ 和http://www.pagecolumn.com/tool/regtest.htm 中测试了正则表达式,正则表达式“enterpriseloyalty[A-Za-z]*(?=.1,1)”的匹配结果有效,匹配“enterpriseloyaltyjournal " 在 URL 字符串中。但在网站上,“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】:

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

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")))

【讨论】:

以上是关于经典 ASP 中的正则表达式,以确定 URL 是不是具有特定字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何测试以确定浏览器是不是支持 JS 正则表达式lookahead/lookbehind?

Flask 在其 URL 路由中是不是支持正则表达式?

使用正则表达式查看单元格是不是包含 Google 表格中的表情符号

正则表达式检查链接是不是指向文件

使用正则表达式的 ASP.NET C# 客户端和服务器端验证

用于替换 URL 中的页码的正则表达式