ホームページ  >  記事  >  バックエンド開発  >  PHPメールアドレスの正規表現実装と詳細解説_PHPチュートリアル

PHPメールアドレスの正規表現実装と詳細解説_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 16:56:02973ブラウズ

この記事では、正規表現について説明するだけでなく、電子メールの正規表現の構成と使用法についても説明します。同時に、さまざまな電子メール検証の例も提供します。正規表現

コードは次のとおりですコードをコピー^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$ この正規表現では、「+」は前の文字列が 1 つ以上連続して出現することを意味し、「^」は次の文字列が先頭に出現することを意味し、「$」は前の文字列が最後に出現することを意味します。 「.」は「.」でもあり、「」はエスケープ文字です。「{2,3}」は、前の文字列が連続して 2 ~ 3 回出現できることを意味します。 「()」は、含まれるコンテンツがターゲット オブジェクトにも出現する必要があることを示します。 「[_.0-9a-z-]」は、「_」、「.」、「-」に含まれる任意の文字、a から z の範囲の文字、および 0 から 9 の範囲の数字を意味します。 このようにして、この正規表現は次のように翻訳できます:

「次の文字は (^) で始まる必要があります。」、「文字は「_」、「.」、「-」、a ~ z の範囲の文字、0 ~ 9 の範囲の数字 ([ _.0-9a-z-])", "前の文字は少なくとも 1 回出現します (+)", @, "この文字列は、a から z の範囲に含まれる文字で構成され、0 から 9 は a で始まります。数字内の文字、その後に「-」に含まれる少なくとも 1 つの文字、a ~ z の範囲の任意の文字、0 ~ 9 の範囲の任意の数字が続き、最後に (([0-9a -z) ][0-9a-z-]+.))"、"前の文字が少なくとも 1 回出現します (+)"、"a から z までの範囲の文字が 2 ~ 3 回出現し、それで終わります ([ a-z] {2,3}$)」




コードは次のとおりです

コードをコピー { if(エレギ("^([_a-z0-9-]+)(.[_a-z0-9-]+)*@([a-z0-9-]+)(.[a-z0-9 -]+)*(.[a-z]{2,4})[wind_phpcode_0 ]quot;, $email)) if($test_mx)
関数 is_valid_email($email, $test_mx = false)
{
list($username, $domain) = split("@", $email);
return getmxrr($domain, $mxrecords);
}
その他
true を返します;
それ以外
false を返す;
}


ドメイン名は、さまざまな国の特定の文字セット、英語の文字、数字、および「-」(つまり、ハイフンまたはマイナス記号)の任意の組み合わせで構成されますが、先頭または末尾に「-」を含めることはできません。 -」を連続して表示することはできません。 ドメイン名の文字は大文字と小文字が区別されません。ドメイン名の長さは最大 60 バイトです (サフィックス .com、.net、.org などを含む)。
/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9] ]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i;
/content/i は、大文字と小文字を区別しない正規表現を形成します。
^ マッチング開始

$マッチ終了

[a-z] 電子メールの接頭辞は英字で始まる必要があります

([a-z0-9]*[-_]?[a-z0-9]+)* は、_a_2、aaa11、_1_a_2 には一致しますが、a1_、aaff_33a_、a__aa には一致しません。NULL 文字の場合は一致しません。も一致します。 * は 0 以上を意味します。

* は先行する 0 個以上の文字を表します。

[a-z0-9]* 0 個以上の英語の文字または数字と一致します

[-_]?「-」は連続して出現できないため、0 または 1 つの「-」と一致します

[a-z0-9]+ は、「-」を末尾として使用できないため、1 つ以上の英語の文字または数字に一致します

@ @

が 1 つあるはずです

([a-z0-9]*[-_]?[a-z0-9]+)+ 上記を参照 ([a-z0-9]*[-_]?[a-z0-9]+) ※説明ですが空にすることはできません、+は1つ以上を意味します。

[.] は特殊文字 (.) を通常の文字として扱います

[a-z]{2,3} は 2 ~ 3 個の英字 (通常は com や net など) に一致します。

([.][a-z]{2})? 0 または 1 [.][a-z]{2} (.cn など) と一致します。.com.cn の最後の部分が通常は 2 つです。そうでない場合は、{2} を {開始単語番号、終了単語番号} に変更してください

詳細な説明付きの完璧な電子メール正規表現。テストに協力してください。 2. 文字列内の電子メールを抽出します:

コードは次のとおりです コードをコピー
関数 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 私は Mivi の場所ではないので、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 "
";
?>次のように印刷します:
配列
(
[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 番目の部分の正規表現には、最初の部分の ^ と $ がありません。
もう一度例を見てください

コードは次のとおりですコードをコピー
function funcemail($str)//メールの正規表現

{
return (preg_match('/^[_.0-9a-z-a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$/' ,$str))?true:false;
}//検証方法その1

$str="qbcd@126.com.cn";

preg_match("/^[0-9a-z]+@(([0-9a-z]+)[.])+[a-z]{2,3}$/",$str,$re);
print_r($re);//メール認証 2

if (エレギ("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$", $email)) {

echo "あなたの電子メールは予備チェックに合格しました";
}//3番目のメール認証方法

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 "あなたのメールアドレスは正しいです!";}
その他{
エコー「もう一度試してください!」; }

http://www.bkjia.com/PHPjc/631637.html

tru​​ehttp://www.bkjia.com/PHPjc/631637.html技術記事この記事では、正規表現について説明するだけでなく、メールボックスでの正規表現の構成と使用法についても説明します。同時に、さまざまな説明も提供します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。