Home  >  Article  >  Backend Development  >  PHP email address regular expression implementation and detailed explanation_PHP tutorial

PHP email address regular expression implementation and detailed explanation_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 16:56:02976browse

This article not only tells about regular expressions, but also explains the composition and usage of email regular expressions. Friends who need to know more can refer to it. At the same time, we also provide a variety of different email verification examples.

Regular expression

 代码如下 复制代码
^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$

In this regular expression, "+" means that the previous string appears one or more consecutively; "^" means that the next string must appear at the beginning, and "$" means that the previous string must appear at End;
"." is also ".", where "" is an escape character; "{2,3}" means that the previous string can appear 2-3 times in a row. "()" indicates that the contained content must also appear in the target object. "[_.0-9a-z-]" means any character contained in "_", ".", "-", letters in the range from a to z, and numbers in the range from 0 to 9;
In this way, this regular expression can be translated like this:
"The following characters must begin with (^)", "The character must be contained in "_", ".", "-", letters in the range from a to z, numbers in the range from 0 to 9 ([ _.0-9a-z-])", "The previous character appears at least once (+)", @, "The string consists of a letter contained in the range from a to z, from 0 to 9 begins with a character in a number, followed by at least one character contained in "-", any letter in the range from a to z, any number in the range from 0 to 9, and finally ends with . (([0-9a -z][0-9a-z-]+.))", "The previous character appears at least once (+)", "Letters in the range from a to z appear 2-3 times and end with it ([ a-z]{2,3}$)”

The code is as follows Copy code
function is_valid_email($email, $test_mx = false )
 代码如下 复制代码
function is_valid_email($email, $test_mx = false)
{
    if(eregi("^([_a-z0-9-]+)(.[_a-z0-9-]+)*@([a-z0-9-]+)(.[a-z0-9-]+)*(.[a-z]{2,4})[    wind_phpcode_0    ]quot;, $email))
        if($test_mx)
        {
            list($username, $domain) = split("@", $email);
            return getmxrr($domain, $mxrecords);
        }
        else
            return true;
    else
        return false;
}
{ if(eregi("^([_a-z0-9-]+)(.[_a-z0-9-]+)*@([a-z0-9-]+)(.[a-z0-9 -]+)*(.[a-z]{2,4})[ wind_phpcode_0 ]quot;, $email))            if($test_mx)            {              list($username, $domain) = split("@", $email);                 return getmxrr($domain, $mxrecords); }         else              return true; else          return false; }

The domain name is composed of any combination of specific character sets of various countries, English letters, numbers and "-" (i.e. hyphen or minus sign), but it cannot contain "-" at the beginning or at the end, and "-" cannot appear continuously. . Letters in domain names are not case-sensitive. The domain name can be up to 60 bytes long (including suffixes .com, .net, .org, etc.).
/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9 ]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i;
/content/i forms a case-insensitive regular expression;
^ Matching starts

$ Match ends

[a-z] E-Mail prefix must start with an English letter

([a-z0-9]*[-_]?[a-z0-9]+)* matches _a_2, aaa11, _1_a_2, but does not match a1_, aaff_33a_, a__aa. If it is a null character, It is also matching, * means 0 or more.

* represents 0 or more preceding characters.

[a-z0-9]* matches 0 or more English letters or numbers

[-_]? Matches 0 or 1 "-", because "-" cannot appear continuously

[a-z0-9]+ matches 1 or more English letters or numbers, because "-" cannot be used as the end

@ There must be one@

([a-z0-9]*[-_]?[a-z0-9]+)+ see above ([a-z0-9]*[-_]?[a-z0-9] +)* explanation, but it cannot be empty, + means one or more.

[.] Treat special characters (.) as normal characters

[a-z]{2,3} matches 2 to 3 English letters, usually com or net, etc.

([.][a-z]{2})? Matches 0 or 1 [.][a-z]{2} (such as .cn, etc.) I don’t know if the last part of .com.cn is generally It is two digits. If not, please change {2} to {number of starting words, number of ending words}

Perfect E-Mail regular expression, with detailed explanation, please help test it! 2. Extract the email in the string:

The code is as follows
 代码如下 复制代码
function getEmail($str) {
$pattern = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i";
preg_match_all($pattern,$str,$emailArr);
return $emailArr[0];
}
$emailstr = "9999@qq.com.cn俺不是米vi地方就开iid邮件列表:fuyongjie@163.com和hh@qq.com;.;;,fuyongjie.100@yahoo.com,fu-1999@sina.com";
$emailArr = getEmail($emailstr);
echo "
";<br>
print_r($emailArr);<br>
echo "
";
?>打印如下:
Array
(
[0] =>9999@qq.com.cn
[1] =>fuyongjie@163.com
[2] =>hh@qq.com
[3] =>fuyongjie.100@yahoo.com
[4] =>fu-1999@sina.com
)3.比较:第2里的正则里没有了第1的^和$;
Copy code

代码如下 复制代码

function funcemail($str)//邮箱正则表达式
{
return (preg_match('/^[_.0-9a-z-a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$/',$str))?true:false;
}//验证方法一

$str="qbcd@126.com.cn";
preg_match("/^[0-9a-z]+@(([0-9a-z]+)[.])+[a-z]{2,3}$/",$str,$re);
print_r($re);//邮箱验证二

if (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$email)) {
echo "您的 e-mail 通过初步检查";
}//第三种邮箱验证方法

if (ereg("/^[a-z]([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i; ",$email)){
echo "your email address is correct!";}
   else{
echo "please try again!";
}

function getEmail($str) { $pattern = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0- 9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i"; preg_match_all($pattern,$str,$emailArr); return $emailArr[0];

}

$emailstr = "9999@qq.com.cn I am not a Mivi place, so I opened the iid mailing list: fuyongjie@163.com and hh@qq.com;.;;, fuyongjie.100@yahoo.com, fu-1999@ sina.com";

$emailArr = getEmail($emailstr); ?>Print as follows: Array ( [0] =>9999@qq.com.cn [1] =>fuyongjie@163.com [2] =>hh@qq.com [3] =>fuyongjie.100@yahoo.com [4] =>fu-1999@sina.com )3. Comparison: The regex in the 2nd one does not have the ^ and $ in the 1st one;
Look at the example again
The code is as follows Copy code
function funcemail($str)//Mailbox regular expression { return (preg_match('/^[_.0-9a-z-a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$/' ,$str))?true:false; }//Verification method one $str="qbcd@126.com.cn"; preg_match("/^[0-9a-z]+@(([0-9a-z]+)[.])+[a-z]{2,3}$/",$str,$re); print_r($re);//Email verification 2 if (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$ ",$email)) { echo "Your e-mail passed preliminary check"; }//The third email verification method if (ereg("/^[a-z]([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[- _]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i; ",$email)){ echo "your email address is correct!";} ​ else{ echo "please try again!"; } http://www.bkjia.com/PHPjc/631637.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/631637.htmlTechArticleThis article not only tells about regular expressions but also tells about the detailed explanation of the composition and usage of mailbox regular expressions. If necessary Friends who know more about it can refer to it. At the same time, we also provide a variety of different...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn