2012-02-07 47 views
2

我必須做一個站點重定向通過腳本約10個不同的URL都包含字符串「企業」。我正在嘗試編寫一些RegEx來查明URL是否包含此內容。爲此,我正在使用我在另一個問題上找到的函數(using classic asp for regular expression)。問題是,當我在「http://enterpriseloyaltyjournal.ca/」網站上測試它時,沒有任何東西正在返回。正則表達式在經典的ASP,以找出該URL是否有一個特定的字符串

我已經在測試中都http://gskinner.com/RegExr/http://www.pagecolumn.com/tool/regtest.htm正則表達式與正則表達式的匹配結果 「enterpriseloyalty [A-ZA-Z] *(?= {1,1})」 工作,匹配 「enterpriseloyaltyjournal」網址字符串。但在網站上,「Response.Write(」結果:「& 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"))) 

和它的工作就好了。

回答

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"))) 
相關問題