I want to validate email addresses in iebms to the standard RFC 822 or
something like that. This regular expression was recommended and will
work… however for some reason it always returns false…
Besides making double quotes two double quotes, I didn't change the
expression. I did that so the string would work.
Any help?
Ryan
Public Function ValidateEmail(ByVal astrEmailAddress As String) As
Boolean
Return System.Text.RegularExpressions.Regex.IsMatch(astrEmailAddress,
("^[\040\t]*(?: \( [^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] |
\( [^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff]
[^\\\x80-\xff\n\015()] *)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]*
)*(?'mailbox'(?'localpart'(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|(?'quotedstr'\""[^\\\x80-\xff\n\015""]
*(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015""] * )*\"")) [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*(?:\. [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\[^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|(?'quotedstr'\""[^\\\x80-\xff\n\015""]
*(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015""] * )*\"")) [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*)*) \@ [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
(?'domain'(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|\[(?:
[^\\\x80-\xff\n\015\[\]""] | \\ [^\x80-\xff] )*\])[\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
?\. [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|\[(?:
[^\\\x80-\xff\n\015\[\]""] | \\ [^\x80-\xff] )*\])[\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]*
)*)*)|(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|(?'quotedstr'\""[^\\\x80-\xff\n\015""]
*(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015""] *
)*\""))[^()<>\@,;:\"".\\\[\]\x80-\xff\000-\010\012-\037](?
?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) |
(?'quotedstr'\""[^\\\x80-\xff\n\015""] *(?: \\ [^\x80-\xff]
[^\\\x80-\xff\n\015""] * )*\"")
)[^()<>\@,;:\"".\\\[\]\x80-\xff\000-\010\012-\037] *)* < [\040\t]*(?:
\( [^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*(?: \@ [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
(?'domain'(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|\[(?:
[^\\\x80-\xff\n\015\[\]""] | \\ [^\x80-\xff] )*\])[\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
?\. [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|\[(?:
[^\\\x80-\xff\n\015\[\]""] | \\ [^\x80-\xff] )*\])[\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff]| \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*)*)(?: , [\040\t]*(?:
\( [^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )* \@ [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
(?'domain'(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|\[(?:
[^\\\x80-\xff\n\015\[\]""] | \\ [^\x80-\xff] )*\])[\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?:\\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
?\. [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\)[\040\t]* )*
(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|\[(?:
[^\\\x80-\xff\n\015\[\]""] | \\ [^\x80-\xff])*\])[\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*)*))*:[\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
)?(?'localpart'(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|(?'quotedstr'\""[^\\\x80-\xff\n\015""]
*(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015""] * )*\"")) [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*(?:\. [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\[^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|(?'quotedstr'\""[^\\\x80-\xff\n\015""]
*(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015""] * )*\"")) [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?:\\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*)*) \@ [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
(?'domain'(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|\[(?:
[^\\\x80-\xff\n\015\[\]""] | \\ [^\x80-\xff] )*\])[\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
?\. [\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*
(?:[^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>\@,;:\"".\\\[\]\000-\037\x80-\xff])|\[(?:
[^\\\x80-\xff\n\015\[\]""] | \\ [^\x80-\xff] )*\])[\040\t]*(?: \(
[^\\\x80-\xff\n\015()] *(?
?: \\ [^\x80-\xff] | \(
[^\\\x80-\xff\n\015()] *(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()]
*)*\)) [^\\\x80-\xff\n\015()] *)*\) [\040\t]* )*)*)>)$"))
End Function