RegEx в Classic ASP, чтобы узнать, есть ли в URL конкретная строка - PullRequest
2 голосов
/ 08 февраля 2012

Мне нужно сделать редирект сайта через скрипт для примерно 10 разных URL, содержащих строку «enterpriseloyalty». Я пытаюсь написать RegEx, чтобы выяснить, есть ли в этом URL. Для этого я использую функцию, которую нашел здесь по другому вопросу (, используя классический asp для регулярного выражения ). Проблема в том, что при тестировании на сайте ничего не возвращается "http://enterpriseloyaltyjournal.ca/".

Я проверял регулярное выражение в http://gskinner.com/RegExr/ и http://www.pagecolumn.com/tool/regtest.htm с соответствующими результатами регулярного выражения "EnterpriseLyalty [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

EDIT

Я также пытаюсь выполнить следующее без результатов:

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 Ответ

4 голосов
/ 08 февраля 2012

Нашел другой способ сделать это и в итоге использовал:

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")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...