2

重複の可能性:
Javascriptでメールアドレスを検証しますか?

このJavaScriptを使用して有効な電子メールをチェックしようとしていますが、誰かが電子メールアドレスを持っていない場合に備えて、フォームのフィールドが空白かどうかを確認する必要はありません(聞く)。

function validate_email(field,alerttxt)
{
with (field)
{
apos=value.indexOf("@");
dotpos=value.lastIndexOf(".");
if (apos<1||dotpos-apos<2) 
  {alert(alerttxt);return false;}
else {return true;}
}
}

function validate_form(thisform)
{
with (thisform)
{
  if (validate_email(email,"Not a valid e-mail address.")==false)
  {email.focus();return false;}
}
}

apos <1を1未満に調整しようとしたか、まったく調整しようとしませんでしたが、うまくいかなかったようです。

4

2 に答える 2

2

空かどうかを確認するだけです。そうでない場合は、電子メールの正規表現/検証関数を適用してください。

また、a)使用withしないでください。b)テスト機能からアラートを出さないでください。

function test_email(address) {
    var atpos = address.indexOf("@"),
        dotpos = address.lastIndexOf(".");
    if (atpos < 1) // "@" at position 0 or not found (-1)
        return false;
    if (dotpos-atpos < 2) // last "." before position 2 or not found (-1)
        return false;
    if (atpos > dotpos) // last "." before the "@"
        return false;
    return true;
}

function validate_form(thisform) {
    var input = thisform.email;
    if (input.value) // != ""
        if (!test_email(input.value)) {
            alert("Not a valid e-mail address.");
            email.focus();
            return false;
        }
}
于 2012-07-24T15:10:50.090 に答える
0

正規表現はおそらく最良のアプローチであり、前の質問には使用するのに最適な正規表現がありますが、より複雑で完全なものが利用可能です。JavaScript で電子メール アドレスを検証しますか?

その正規表現を使用してコードに適合させると、次のような関数が得られます

function validate_email(field,alerttxt) {
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    if (re.test(field)) {
        return true;
    } else {
        alert(alerttxt);
        return false;
    }
}
于 2012-07-24T15:26:24.467 に答える