2013-02-16 88 views
1

我目前正在對自己的驗證,但我有一個小問題。 我無法使電子郵件驗證工作。我嘗試了一些不同的表達方式,但無法使其工作。也許我在佈局上做錯了什麼?jQuery的電子郵件驗證正則表達式問題

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; 
    } 
}); 
+0

不要做正則表達式電子郵件驗證超出了非常基本的'/ [^ @ \ s] + @ [^ @ \ s] + \。[^ @ \ s] + /'檢查。一個更復雜的正則表達式會拒絕有效地址,或者太複雜以至於無法維護,兩者都無用。把事情簡單化。通過嘗試在那裏發送實際郵件來檢查郵件地址。 – Tomalak 2013-02-16 15:56:50

+0

當[此插件可用]時,我不會編寫自己的驗證腳本(http://docs.jquery.com/Plugins/Validation)。但是,只需查看[包含在其中的電子郵件正則表達式](http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.js)。 – Sparky 2013-02-16 16:14:16

回答

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 
     } 
     }); 
0

當你這樣做:

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

email是一個jQuery對象,而不是字符串用戶輸入。你需要得到實際的串出輸入字段,並使用與您的正則表達式是這樣的:

if (filter.test(email.val())){ 
1

我不會當the jQuery Validate plugin is available寫我自己的驗證腳本。

但是,你可以簡單地看一看在email regex contained within it和使用......

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/

相關問題