1

現在、独自の検証に取り組んでいますが、小さな問題が1つあります。メールの検証を機能させることができません。いくつかの異なる表現を試しましたが、うまくいきません。多分私はレイアウトに何か問題がありましたか?

var email = $('.email');    
function valemail(){
    var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if (filter.test(email)){
        return true;
    } else {
        return false;
    }
}

$('#registerform').submit(function() {
    if (valemail()) {
        return true;
    } else {
        return false;
    }
});
4

3 に答える 3

2

これを試して :

function IsEmail(email) {
  var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  return regex.test(email);
}

次の呼び出し:

   $('#registerform').submit(function(){
      if(IsEmail($(this).val())==false){
          //do something validation not satisfied
        }else{
            //do something
        }
      });
于 2013-02-16T15:51:44.230 に答える
1

jQuery Validate プラグインが利用できる場合、私は独自の検証スクリプトを作成しません。

ただし、それに含まれる電子メールの正規表現を見て、それを使用することもできます...

function email(value) {
    // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
    return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value);
}


$('#registerform').submit(function() {
    var result = email($('#myemailfield').val());
    if (result) {
        alert('passed'); // <-- your code if passed
    } else {
        alert('failed'); // <-- your code if failed
    }
});

簡単なデモ: http://jsfiddle.net/m8baZ/

于 2013-02-16T16:24:46.643 に答える
0

これを行う場合:

var email = $('.email');
if (filter.test(email)){

emailユーザーが入力した文字列ではなく、jQuery オブジェクトです。入力フィールドから実際の文字列を取得し、次のように正規表現で使用する必要があります。

if (filter.test(email.val())){
于 2013-02-16T16:24:36.200 に答える