John Klensin によって書かれた Internet Task Force Engineering Group (IETF) 文書 RFC 3696「Application Technical Checks and Naming Transformations」には、複数の実際の有効な EMAIL アドレスが記載されていますが、残念ながら、これらのアドレスはほとんどの PHP スクリプトでは使用されません。アドレス Abc@def@example.com、customer/Department=shipping@example.com、および !def!xyz%abc@example.com はすべて有効です。以下は、関連する文献に記載されているものです。ただし、前に指定したすべての EMAIL アドレスは拒否されます:
^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$ ログイン後にコピー |
この正規表現では、アンダースコア (_) とハイフン (-)、数字、大文字と小文字のみが許可されます。スラッシュ (/)、等号 (=)、感嘆符 (!)、およびパーセント記号 (%) を含むアドレスは、その前に文字が大文字と小文字に変換されていたとしても拒否されます。この式では、トップレベル ドメイン コンポーネントが少なくとも 2 文字または 3 文字である必要があるため、.museum などの有効なドメインも拒否されます。
もう 1 つのお気に入りの正規表現は次のとおりです:
^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$ ログイン後にコピー |
この正規表現は、前の段落で指定された有効なアドレスの例も拒否します。大文字の問題はエレガントに解決され、先頭が 1 文字目であってもエラーは報告されません。 -level ドメイン名は 2 文字または 3 文字だけですが、example..com などの無効なドメイン名も許可されます。
リスト 1 は、PHP Dev Shed (
) の例を示しています。