0

JSLintを使用すると、isEmailValidが機能しません。コードの何が問題になっていますか?ローカルが使用される前に定義されていなかった、@無効な文字、または^が囲まれていないなど、さまざまなエラーメッセージが表示されますが、電子メールの場合は記号「^」が含まれている可能性がありますか?

function isEmailValid(email) {
"use strict";
var e = (email.split("@"), local = /[^\w.!#$%&*+-\/=?^_{|}~]/, domain = /[^\w.-]/);
if (e.length !== 2) {
    return false;
}
if (local.test(e[0])) {
    return false;
}
if (e[0].length > 253) {
    return false;
}
if ((e[0][0] === ".") || (/\.\./.test(e[0]))) {
    return false;
}
if (domain.test(e[1])) {
    return false;
}
if (e[1].length > 253) {
    return false;
}
if (e[1][0] === "." || /\.\./.test(e[1]) || e[1][e[1].length - 1] === ".") {
    return false;
}
return true;
    }
4

3 に答える 3

1

次の正規表現を使用して、クライアント側の電子メールアドレスを検証します。

/.@./

次に、そのアドレスに電子メールを送信して、サーバー側で実際の検証を行います。

動作する電子メールアドレスは、どの仕様にも準拠していない可能性があり、実際に存在します。有効なメールアドレスが間違っているように見えるため、ユーザーを制限する意味はありません。同時に、ユーザーが正しいように見えるが偽のメールアドレスを入力できるようにします(たとえば、iwontgiveyoumyrealemailaddress @ noreply.comはコンピューターには本物のように見えますが、おそらくそうではありません) )。

必読

于 2012-10-19T21:45:16.213 に答える
0

local関数内でローカル変数として実際に宣言していないため、エラーが発生します。

varステートメントに括弧が含まれていないか、括弧が使用されていません。したがって、とにかくそれらを次のように使用します。

var e = (email.split("@"), local = /[^\w.!#$%&*+-\/=?^_{|}~]/, domain = /[^\w.-]/);

と同等です:

local = /[^\w.!#$%&*+-\/=?^_{|}~]/;
domain = /[^\w.-]/;
var e = (email.split("@"), local, domain);

e次に、評価される括弧の結果に設定されます。これには、コンマ演算子のオペランドが含まれているだけです。したがって、最後の行は次のようになります。

email.split("@");
local;
var e = domain;

そして、それはあなたが望んでいたものではないように思われるので、おそらく括弧は必要ありません:

var e = email.split("@"), local = /[^\w.!#$%&*+-\/=?^_{|}~]/, domain = /[^\w.-]/;
于 2012-10-17T19:32:55.487 に答える
0

正規表現を使用することをお勧めします:

function validateEmail(email) { 
   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,}))$/;
   return re.test(email);
} 

参照:JavaScriptでメールアドレスを検証しますか?

于 2012-10-17T18:49:34.047 に答える