Re: Valid email address syntax script?

From: Date: Fri, 06 May 2005 13:48:11 +0000
Subject: Re: Valid email address syntax script?
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-214624@lists.php.net to get a copy of this message
JM wrote:
Does anyone have a nice email address syntax checking script they'd like to share? Regular expression-based anyone? TIA.
yes,yes,yes,cheers.
the email regexp passes Richard Lynch's email addr (check the archives :-), have fun (sorry if the line wrapping craps out)... <?php /** * RegExp.class.php :: class wrapper for regexp stuff *
 * @author      Jochem Maas <jochem@iamjochem.com>
* @copyright Copyright 2003-2004, iamjochem & ard biesheuvel * * @link http://www.iamjochem.com * * $Header: /var/cvs/pom_core/php/class/RegExp.class.php,v 1.24 2005/04/12 11:36:21 jochem Exp $ */ /* FTL License. Fuck The License */ class RegExp {
    /* basic */
    const NOT_EMPTY         = '^.{1,}$';
    const DONT_CARE         = '^.*$';
    /* numeric related */
    const UNSIGNED_INT      = '^\d*$';
    const SIGNED_INT        = '^[-+]?\d*$';
    const FLOATING_POINT    = '^[-+]?(\d*\.)?\d+$';
    const FLOAT_GTEQ1       = '^[+]?[1-9]\d*(\.\d+)?$'; // a 'float' greater than .999999...
    const PERCENTAGE        = '^100|[0-9]{1,2}$';
    const TIMESTAMP         = ''; // '^\d*$'; // what does the timestamp regexp look like??
    const LANG_CHARS        = '^en|nl|fr|de|it|es|vl|us$';
    //const LANG_CHARS        = '^en|nl|fr|de|it|es$';
    const CURRENCY_ID       = '^[a-zA-Z]{3}$';
    /* boolean-ish */
    const BOOLEAN           = '^Y|N$';
    const SEX_NL            = '^M|V$';
    const GENDER            = '^M|F$';
    /* contact-type info */
    const EMAIL             = '^(([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9}))?$';
    const EMAIL_REQ         = '^(([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9}))$';
    const URL               = '^(((((ht|f)tp(s?))\:\/\/)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|co\.uk|[a-zA-Z]{2})(\:[0-9]+)?)?(\/($|[a-zA-Z0-9\.\,\;\?\'\\+&%\$#\=~_\-\[\]]+))*)?$';
    //const URL               = '^((((ht|f)tp(s?))\:\/\/)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|co\.uk|[a-zA-Z]{2})(\:[0-9]+)?(\/($|[a-zA-Z0-9\.\,\;\?\'\\+&%\$#\=~_\-\[\]]+))*)?$';
    const PHONE             = '^\+?(\d+( *[.-]? *))*$';
    const POSTCODE          = '^.*$';
    const POSTCODE_REQ      = '^[0-9a-zA-Z]+([- ][0-9a-zA-Z]+)?$';
    /* page layout - rather specific! */
    const PAGE_LAYOUTS      = '^(tb|bt|lr|rl|null)?$';
    /* e.g. if ( RegExp::match(RegExp::FLOATING_POINT, '16.786541') ) { ... } */
    static public function match($regexp, $value)
    {
        /*
        if (defined("RegExp::{$regexp}")) {
            $regexp = constant("RegExp::{$regexp}");
        }
        */
        return (boolean) preg_match("/$regexp/", $value);
    }
}

« previous php.general (#214624) next »