0

次の JavaScript を使用して適切な電子メール アドレスを検証しようとしていますが、このスクリプト内でエラーが発生します。誰でも理由がわかりますか?前もって感謝します。

function isEmail(str){
    var reg = new RegExp("?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]");
    return reg.test(str);
}
4

3 に答える 3

0

エスケープされていない文字列文字があります。で文字列を開くときはいつでも、文字列に"入れたいときはいつでも"、バックスラッシュでエスケープする必要があります\"

function isEmail(str){
    var reg = new RegExp("?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]");
    return reg.test(str);
}
于 2012-10-15T19:22:15.073 に答える
0

エラーは、エスケープされていない二重引用符があることです

var reg = new RegExp("?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\" ....
-----------------------------------------------------------------------------------------^

注:質問の色分けを見るだけでわかります。たぶんあなたのIDEにも色分けがあります。

于 2012-10-15T19:22:24.960 に答える
0

電子メールの検証は間違いやすいものです。したがって、Verimail.jsを使用することをお勧めします。

なんで?

  • 構文検証 (RFC 822 による)
  • IANA TLD 検証
  • 最も一般的な TLD と電子メール ドメインのスペルの候補
  • mailinator.com などの一時的な電子メール アカウント ドメインを拒否する

それは簡単です!スクリプトをダウンロードしてサイトに含めます。

https://raw.github.com/comfirm/Verimail.js/master/src/verimail.js

次に使用します。

var email = "cool@fabeook.cmo";
var verimail = new Comfirm.AlphaMail.Verimail();

verimail.verify(email, function(status, message, suggestion){
    if(status < 0){
        // Incorrect syntax!
    }else{
        // Syntax looks great!
    }
});

Verimail.js には、非常に使いやすいjQuery プラグインもあります。

$("input#email-address").verimail({
    messageElement: "p#status-message"
});
于 2012-10-16T13:40:37.340 に答える