ホームページ > バックエンド開発 > PHPチュートリアル > PHP は正規表現を使用して電子メール アドレスを検証します

PHP は正規表現を使用して電子メール アドレスを検証します

怪我咯
リリース: 2023-03-14 06:30:02
オリジナル
8552 人が閲覧しました

電子メールも通常の郵便と同様にアドレスが必要です。通常の郵便との違いは、電子アドレスであることです。インターネット上にメールボックスを持つすべてのユーザーは、1 つまたは複数の独自の電子メール アドレスを持っており、これらの電子メール アドレスはすべて一意です。メール サーバーは、これらのアドレスに基づいて各電子メールを各ユーザーのメールボックスに送信します。電子メール アドレスはユーザーのメールボックス アドレスです。通常のメールと同様に、メールを受信できるかどうかは、正しいメールアドレスを取得しているかどうかによって決まります。 完全なインターネット電子メール アドレスは、次の 2 つの部分で構成されます。 ログイン名@ホスト名.ドメイン名 左側の「アット」を意味する記号「@」で区切られます。記号の横が相手のログイン名、右側がホスト名とドメイン名からなる完全なホスト名です。このうち、ドメイン名はいくつかの部分で構成されており、各部分はサブドメイン (サブドメイン) と呼ばれ、各サブドメインはドット「.」で区切られ、このメール サーバーに関する情報がユーザーに伝えられます。
php の正規一致電子メール コード

1. 電子メールを確認します:

 < ?php 
   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!"; 
} 
?>
ログイン後にコピー

または

$str = &#39;&#39;;
$isMatched = preg_match(&#39;/^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}$/&#39;, $str, $matches);
var_dump($isMatched, $matches);
ログイン後にコピー

電子メール メールボックス形式の

正規表現

と一致します:

分析:

/content/i は、大文字と小文字を区別しない正規表現を構成します。式;

^ 一致の開始
$ 一致の終了
[a-z] 電子メールのプレフィックスは英語の文字で始まる必要があります

([a-z0-9]*[-_]?[a-z0-9]+ )* は、_a_2、aaa11、_1_a_2 には一致しますが、a1_、aaff_33a_、aaa には一致しません。ヌル文字の場合、* は 0 以上を意味します。
* は 0 個以上の前の文字を表します。
[a-z0-9]* は 0 個以上の英字または数字に一致します。
[-_]? は 0 または 1 個の「-」に一致します。「-」は連続して出現できないためです。
[a -z0-9]+ は 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 を変更してください。 } to {開始単語の数, 終了単語の数}

メール アドレスの一致に使用されるこの正規表現は、比較的強力で強力で、範囲が広いため、便利だと思う友人がブックマークできます。
国際ドメイン名の形式は次のとおりです:

ドメイン名は、各国の言語の特定の
文字セット
、英語の文字、数字、および「-」(つまり、ハイフンまたはマイナス記号)の任意の組み合わせで構成されます。ただし、先頭または末尾に「-」を含めることはできません。また、「-」を連続して使用することはできません。 ドメイン名の文字は大文字と小文字が区別されません。ドメイン名の長さは最大 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 は大文字と小文字を区別しない正規表現を形成します
^ 先頭に一致します。 $ end と一致
[a-z] 電子メールのプレフィックスは英語の文字で始まる必要があります
([a-z0-9]*[-_]?[a-z0-9]+)* および _a_2、aaa11、_1_a_2 と一致します。ただし、a1_、aaff_33a_、および aaa には一致しません。* は 0 以上を意味します。
* は 0 個以上の前の文字を表します。
[a-z0-9]* は 0 個以上の英字または数字に一致します。
[-_]? は 0 または 1 個の「-」に一致します。「-」は連続して出現できません。
[a- z0-9]+ は 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.
string
内の電子メールを抽出します:

<?php 
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 "<pre class="brush:php;toolbar:false">"; 
print_r($emailArr); 
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 番目の正規表現に含まれません。

以上がPHP は正規表現を使用して電子メール アドレスを検証しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート