Регулярные выражения в VbScript?

Есть ли в VbScript встроенная реализация для Regex? Мне нужно проверить адреса электронной почты на старом ASP-приложении.

Любые указатели были бы великолепны.

11.12.2008 22:30:43
5 ОТВЕТОВ
РЕШЕНИЕ

Этот пример от AlexCuse от LessThanDot

Function ValidEmail(ByVal emailAddress) 

'this function will use regular expressions to check an '
'email address for validity '

'instantiate regex object container, output boolean '
Dim objRegEx, retVal 

'using late binding, vbscript reference is not required '
Set objRegEx = CreateObject("VBScript.RegExp") 

'.pattern -looks for a valid email address '
With objRegEx 
      .Pattern = "^\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$" 
      .IgnoreCase = True 
End With 

retVal = objRegEx.Test(emailAddress) 

'get rid of RegEx object '
Set objRegEx = Nothing 

ValidEmail = retVal 

End Function
8
7.02.2009 18:09:39
Это противный образец соответствия, но легко исправленный.
FlySwat 11.12.2008 22:51:50
хаха, я не использовал этот код довольно давно. Но не могли бы вы поделиться тем, как бы вы исправили шаблон матча? Я не использую регулярные выражения слишком часто, но всегда ищу подсказки.
AlexCuse 12.12.2008 01:07:38
Это допускает нелегальное «e @ .r..com», но не законное «info@some.museum» и отсутствие IDN. Попробуйте отправить в "mailtest @ 例 え. テ ス ト" (или преобразовать в punny-code: "mailtest@xn--r8jz45g.xn--zckzah")
some 12.12.2008 04:31:32
Поскольку вопрос помечен VBScript, я удивлен, как многие проголосовали за реализацию VB6.
AnthonyWJones 18.12.2008 14:20:13
1
11.12.2008 22:42:09

Как и другие говорили, да. Я просто хотел познакомить вас с документами devguru vbscript , я считаю, что они, как правило, являются хорошим местом для получения быстрых ответов vbscript. Это есть раздел об объекте Regexp .

0
11.12.2008 22:47:31

VBScript имеет встроенный объект RegExp, который является реализацией Microsoft регулярных выражений JavaScript. У меня есть статья об объекте VBScript RegExp на моем веб-сайте, которая объясняет, как его использовать.

0
12.12.2008 13:51:00

Так как верхний ответ здесь находится в VB6, я подумал, что добавлю один здесь в VBScript (так как это то, что задает вопрос): -

Option Explicit

Function GetEmailValidator()

  Set GetEmailValidator = New RegExp

  GetEmailValidator.Pattern = "^((?:[A-Z0-9_%+-]+\.?)+)@((?:[A-Z0-9-]+\.)+[A-Z]{2,4})$"

  GetEmailValidator.IgnoreCase = True

End Function

Dim EmailValidator : Set EmailValidator = GetEmailValidator()

Теперь несколько тестов:

Response.Write EmailValidator.Test("") = False
Response.Write EmailValidator.Test(" ") = False
Response.Write EmailValidator.Test("somebody@domain.co.uk") = True
Response.Write EmailValidator.Test("someone@domain.com") = True
Response.Write EmailValidator.Test("some.body@domain.co.uk") = True
Response.Write EmailValidator.Test("broken@domain..co.uk") = False
Response.Write EmailValidator.Test("@oops.co.uk") = False
Response.Write EmailValidator.Test("name") = False
Response.Write EmailValidator.Test("name@uk") = False
Response.Write EmailValidator.Test("name@uk") = False
Response.Write EmailValidator.Test("name@domain.abcde") = False
20
18.12.2008 14:32:19
по какой-то причине это было немного медленно (IE 9), я немного упростил до ^ [A-Z0-9 _% + - \.] + @ [A-Z0-9 - \.] + \. [AZ] { 2,10} $
ren 8.03.2013 12:44:41
Апостроф - действительный символ в левой части письма, например, Conan.O'Brien@teamcoco.com, но вы этого не разрешаете
Jack Watts 15.01.2020 23:02:56