On 21 January 2011 11:38, a...@ashleysheridan.co.uk
a...@ashleysheridan.co.uk wrote:
That won't accept dozens of different types of email addresses. It won't even
match some value domains.
Valid email addresses can contain virtually any character in the local part
(although in the main they will require being inside quotation marks), and
the @ symbol is included in that!
Thanks,
Ash
http://www.ashleysheridan.co.uk
- Reply message -
From: Alejandro Michelin Salomon amichel...@hotmail.com
Date: Fri, Jan 21, 2011 12:14
Subject: RES: [PHP] email address syntax checker
To: 'Donovan Brooke' li...@euca.us
Cc: php-general@lists.php.net
Donovan:
Try this
function EmailCheck ( $sEmail )
{
$regexp=/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z
]{2,}$/i;
if ( !preg_match($regexp, $sEmail) )
return false;
return true;
}
Alejandro M.S.
-Mensagem original-
De: Donovan Brooke [mailto:li...@euca.us]
Enviada em: quinta-feira, 20 de janeiro de 2011 01:14
Para: php-general@lists.php.net
Assunto: [PHP] email address syntax checker
Hi Guys,
I'm waddling my way through database interaction and thought someone on
the list may already have a simple email checker that they'd like to
share...
you know, looking for the @ char and dots etc..
I did a quick search of the archives and found a couple elaborate
things.. but
I'm looking for something simple. This job will have trusted users and
the checker is more to help them catch mistakes when registering.
Thanks!,
Donovan
--
D Brooke
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
http://www.regular-expressions.info/email.html makes a good argument
about the futility of using JUST one massive regex to validate email
addresses.
The long and short of it is the standard says that this should work ...
(?:[a-z0-9!#$%'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%'*+/=?^_`{|}~-]+)*|(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*)@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Which is ...
(?:[a-z0-9!#$%'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%'*+/=?^_`{|}~-]+)*|(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*)@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Which (using RegexBuddy) is explained as ...
Options: case insensitive; ^ and $ match at line breaks
Match the regular expression below
«(?:[a-z0-9!#$%'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%'*+/=?^_`{|}~-]+)*|(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*)»
Match either the regular expression below (attempting the next
alternative only if this one fails)
«[a-z0-9!#$%'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%'*+/=?^_`{|}~-]+)*»
Match a single character present in the list below
«[a-z0-9!#$%'*+/=?^_`{|}~-]+»
Between one and unlimited times, as many times as possible,
giving back as needed (greedy) «+»
A character in the range between “a” and “z” «a-z»
A character in the range between “0” and “9” «0-9»
One of the characters “!#$%'*+/=?^_`{|}” «!#$%'*+/=?^_`{|}»
The character “~” «~»
The character “-” «-»
Match the regular expression below «(?:\.[a-z0-9!#$%'*+/=?^_`{|}~-]+)*»
Between zero and unlimited times, as many times as possible,
giving back as needed (greedy) «*»
Match the character “.” literally «\.»
Match a single character present in the list below
«[a-z0-9!#$%'*+/=?^_`{|}~-]+»
Between one and unlimited times, as many times as
possible, giving back as needed (greedy) «+»
A character in the range between “a” and “z” «a-z»
A character in the range between “0” and “9” «0-9»
One of the characters “!#$%'*+/=?^_`{|}” «!#$%'*+/=?^_`{|}»
The character “~” «~»
The character “-” «-»
Or match regular expression number 2 below (the entire group fails
if this one fails to match)
«(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*»
Match the character “” literally «»
Match the regular expression below
«(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*»
Between zero and unlimited times, as many times as possible,
giving back as needed (greedy) «*»
Match either the regular