note 24084 modified in function.preg-match by jmcastagnetto
| From: | jmcastagnetto@php.net | Date: | Fri, 09 Aug 2002 21:32:12 +0000 |
| Subject: | note 24084 modified in function.preg-match by jmcastagnetto | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-34630@lists.php.net to get a copy of this message | ||
[Editor's note: parse_url() will be simpler and faster, but it is always good to know the
actual regex for cases that need a particular tweak]
This preg-based function checks whether an e-mail address is formally valid. It works with all top
level domains including the new ones (.biz, .info, .museum etc.) and the special ones (.arpa, .int
etc.) as well as with e-mail addresses based on IPs (e.g. webmaster@123.45.123.45).
function is_email($email)
{
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|
[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|
af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|
bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|
bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|
cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|
er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|
gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|
hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|
kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|
lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|
mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|
nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|
pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|
sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|
sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|
ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|
yt|yu|za|zm|zw)|(([0-9][0-9]?|[0-1][0-9][0-9]|
[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|
[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",
$email));
}
(Note that the line-broken regular expression is one long string without any space or new-line
characters!)
Returns true if the address is valid, false otherwise.
--was--
This preg-based function checks whether an e-mail address is formally valid. It works with all top
level domains including the new ones (.biz, .info, .museum etc.) and the special ones (.arpa, .int
etc.) as well as with e-mail addresses based on IPs (e.g. webmaster@123.45.123.45).
function is_email($email)
{
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|
[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|
af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|
bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|
bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|
cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|
er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|
gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|
hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|
kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|
lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|
mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|
nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|
pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|
sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|
sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|
ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|
yt|yu|za|zm|zw)|(([0-9][0-9]?|[0-1][0-9][0-9]|
[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|
[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",
$email));
}
(Note that the line-broken regular expression is one long string without any space or new-line
characters!)
Returns true if the address is valid, false otherwise.
http://www.php.net/manual/en/function.preg-match.php