Home  >  Article  >  Backend Development  >  Implementation and detailed explanation of regular expression of email address in PHP_PHP tutorial

Implementation and detailed explanation of regular expression of email address in PHP_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:19:101064browse

First attach the code

Copy the code The code is as follows:

^[_.0-9a-z-]+@( [0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$

In this regular expression, "+" means the preceding One or more strings appear continuously; "^" means that the next string must appear at the beginning, "$" means that the previous string must appear at the end;
"." is also ".", here " " 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 be at the beginning (^)", "The characters must be contained in "_", ".", "-", from a to Letters in the z range, numbers in the range 0 to 9 ([_.0-9a-z-])", "The preceding character appears at least once (+)", @, "The string consists of Begins with a letter in the range a to z, a number in the range 0 to 9, followed by at least one character contained in "-", any letter in the range a to z, in the range 0 to 9 Any character in a number ends with . (([0-9a-z][0-9a-z-]+.))", "The previous character appears at least once (+)", "From a to Letters in the z range appear 2-3 times and end with it ([a-z]{2,3}$)"
Copy code The code is as follows:

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;
}

The domain name consists of the specific character set, English letters, and numbers of each country's script and "-" (i.e. hyphen or minus sign), but cannot contain "-" at the beginning or end, and "-" cannot appear consecutively in the domain name. The domain name can have up to 60 characters. Bytes (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 constitutes a case-insensitive regular expression;
^ Match start

$ Match end

[a-z] E-Mail prefix must be an English Letters starting with

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

* represents 0 or more previous 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 ending

@ must have @

([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 ordinary 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 They are all two digits. If not, please modify {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:
Copy the code 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 . hh@qq.com;.;;,fuyongjie.100@yahoo.com,fu-1999@sina.com";
$emailArr = getEmail($emailstr);
echo "
"; <br>print_r($emailArr); <br>echo "
";
?>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 ^ and $ in the 1st are not included in the regular expression in the 2nd;


Look at the example


Copy code
The code is as follows:

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 email passed the 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!";
}

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/325326.htmlTechArticleFirst attach the code and copy the code as follows: ^[_.0-9a-z-]+@([ 0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$ In this regular expression, "+" means that one or more of the previous strings appear continuously; ...
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