Version 24 of Regular expression to validate e-mail addresses

Updated 2002-07-10 18:40:31

[Explain why it's bad idea. Always. Point to Friedl RE, link to REs, refer to Perl FAQ, and ...]

One reason this concept is a bad idea - just because a string of characters could, potentially, be an email address does NOT mean that the email address is a valid one. The closest thing that one can do to 'validate' that an email address exists is to send it mail and then to receive mail back in a way that when you parse it, it appears to be valid. Note that even THAT isn't guaranteed.

All that regular expressions can do is determine whether a string contains a predetermined set of characters or not. This has NOTHING to do with whether a particular string corresponds to a mailbox known by a mail server, nor whether said server is permitted to actually deposit email into an existing box, etc. None of that can be determined by regular expression - or for that matter, by much of anything other than a mail delivery program!

Pertinent Perl stuff:

Don Libes wrote "Authentication by Email Reception" [L1 ] to describe "use of email addresses as an authentication mechanism ... [which] provides reasonable security at very low cost ..."

tcllib / mime contains commands (mime::parseaddress, mostly) to parse email addresses.


But mime::parseaddress fails (LV By fail, do you mean does not perform functions it is defined to do - or does it mean does not perform functions that you want it to do? The documentation for the function states that if more than one address is provided, they will be seperated by commas!) on simple, common cases. Specifically, it fails for some fairly typical user input:

     [email protected],[email protected]

is OK but mime::parseaddress seems unable to deal with

     [email protected] [email protected]

Then, when I try to stress it and send mail to

     foo<>[email protected]

The parse "succeeds" but the send fails. -- CLN


Please report such things as either bugs or feature requests at http://sourceforge.net/tracker/?group_id=12883 (tcllib trackers)