Top >
JavaScript > JavaScriptメールアドレスチェッカー
JavaScriptメールアドレスチェッカー
JavaScriptのメールアドレスチェッカーを作ってみました。
記事を書くにあたって、メールアドレスについてのRFCや関連記事をざっと調べてみました。
結果、どういったバリデーションチェックがよいのか落としどころがみつかってませんが、単純にJavaScriptで正規表現を使って動くものを作ってみたいと思っただけなので、ゆるいチェック(現実的)とややきびしいチェックの2つに対応させてみました。
1.メールアドレスチェッカー
下記のフォームからモードを選択し、メールアドレスを入力して「チェック」をクリックすれば検証結果を表示します。
ゆるい(現実的)
きびしい
結果:
ゆるい方のチェックは次のとおりです(抜粋)。
$(function(){
$('#check').click(function(){
var address = $('#address').val();
if (address.match(/^[^@]+@.+\..+$/)) {
$('#result').text("OK");
} else {
$('#result').text("NG");
}
});
});
きびしい方のコードは次のとおりです(抜粋)。
$(function(){
$('#check').click(function(){
var address = $('#address').val();
if (address.match(/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i)) {
$('#result').text("OK");
} else {
$('#result').text("NG");
}
});
});
きびしい方のチェックで用いている正規表現は、「Comparing E-mail Address Validating Regular Expressions」にあるPHPのfilter_varの検証用フィルタFILTER_VALIDATE_EMAILを利用しています(Dフラグはサポートされていないので外しました)。
よってPHPの下記のコードと同じ結果が得られると思いますが、認識が間違っていたらどこかでつぶやいてください。
<?php
if ( filter_var($address, FILTER_VALIDATE_EMAIL) ) {
echo "OK";
} else {
echo "NG";
}
?>
RFCモードでバリデーションOKにならないメールアドレスもあるので、詳しくは参考記事を参照ください。
2.参考サイト
参考サイトは下記です。ありがとうございました。
- Comparing E-mail Address Validating Regular Expressions
- PHPしか書けないザコがメールアドレス正規表現でガチ勢に挑んでみた
- How to Find or Validate an Email Address
- 21世紀の今メールアドレスのバリデーションを考えてみた
- RFC 822 Email Address Parser in PHP
Posted by yujiro このページの先頭に戻る
- 複数のsubmitボタンをonsubmitで判定する方法
- JavaScriptの時間を0パディングする方法
- JavaScriptでJSONデータを作る方法
- JavaScriptやjQueryで設定されたイベントの定義場所を調べる方法
- javascript:void(0)のまとめ
- setTimeout()やsetInterval()で引数を渡す方法
- JavaScriptのFormDataの使い方
- PCのブラウザでiPhoneやAndroidのようなパスワードフォームを実現するJavaScriptライブラリ「FormTools」
- JavaScriptでフォーカスのあたっている要素を取得する「document.activeElement」
- 入力フォームの全角・半角を勝手に変換してくれるJavaScript
- JavaScriptエラーを表示・確認する方法のまとめ
- ソーシャルボタンのJavaScriptでfunctionの前に「!」がついている理由
- JavaScriptでCSSの擬似クラスを設定する方法
- JavaScriptの正規表現で文字列を抜き出す「グループ化」
- JavaScriptにおける引数や配列の要素数の制限について
トラックバックURL
コメントする
greeting