2011-09-16 73 views
1

我有一個小麻煩下面的代碼位讓它正確工作在我的腳本來驗證電子郵件:嘗試使用JavaScript

if (email == "") { 
    $("#field2 .error1").show(); 
    $("input#email").focus(); 
    return false; 
    } 
else if(email != /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9][a-zA-Z0-9.-]*[\.]{1}[a-zA-Z]{2,4}$/) { 
    $("#field2 .error2").show(); 
    $("input#email").focus(); 
    return false; 
    } 

基本上我有我的網頁上的表格,這是驗證一對夫婦字段使用外部js文件。我希望它檢查電子郵件字段是空白還是與正則表達式不匹配。如果它是空白,則返回.error,如果它不匹配正則表達式,我希望它顯示.error2。

發生了什麼是它顯示的錯誤,但即使我把一個正確的電子郵件地址它不會驗證,只是繼續顯示.error2。我非常難過我在這裏想念的任何幫助,將不勝感激。

即使我試試這個,

if (email == "" || email != /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9][a-zA-Z0-9.-]*[\.]{1}[a-zA-Z]{2,4}$/) { 
    $("#field2 .error1").show(); 
    $("input#email").focus(); 
    return false; 
    } 

我還是不能把它發送表單???


好所以我試過這個,它似乎工作正常。它看起來正確嗎?所以我會考慮regx字符串並使用更好的字符串,但更多的只是讓它按預期工作。

var email = $("input#email").val(); 
var regx = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9][a-zA-Z0-9.-]*[\.]{1}[a-zA-Z]{2,4}$/; 
if (email == "") { 
    $("#field2 .error").show(); 
    $("input#email").focus(); 
    return false; 
} 
else if (!regx.test(email)){ 
    $("#field2 .error2").show(); 
    $("input#email").focus(); 
    return false; 
} 
+0

許多其他線程這裏SO有關使用正則表達式驗證電子郵件地址。你可以通過簡單的搜索找到他們所有的人。這裏是一個流行的一個:http://stackoverflow.com/questions/46155/validate-email-address-in-javascript – jfriend00

回答

0

你需要做的做這樣的,

var regx=/^[a-zA-Z0-9._-][email protected][a-zA-Z0-9][a-zA-Z0-9.-]*[\.]{1}[a-zA-Z]{2,4}$/ // create your regular expresseion 

if(regx.test(email)){// use test() method to do the match 
    // do if match 
    }else{ 
    // not matched 
    } 
+0

我很困惑,因爲我離開比賽部分空白,我想我會測試它,它的工作。我不需要在匹配的部分粘貼一些東西嗎? 我有: \t var email = $(「input#email」)。val(); (電子郵件==「」){\t \t if(email ==「」){ \t $(「#field2 .error1」)。show(); \t $(「input#email」)。focus(); \t return false; \t} \t var regx = [a-zA-Z0-9 ._-] + @ [a-zA-Z0-9] [a-zA-Z0-9 .-] * [\。] {1} [A-ZA-Z] {2,4} $/ \t如果(regx.test(電子郵件)){ \t //如果匹配 \t}其他{ \t $(「#字段2 .error2 「)。顯示(); \t $(「input#email」)。焦點(); \t return false; \t} – Shaun

+0

我不明白你在說什麼..如果你不需要使用匹配的部分就不要使用它。 –

0

你所比較的正則表達式。

var filter = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9][a-zA-Z0-9.-]*[\.]{1}[a-zA-Z]{2,4}$/; 

if (!filter.test($("input#email").val())) 
{ 

    // invalid email 

} 
//valid email 
+2

問題中使用的正則表達式以及迄今爲止所有的答案都失敗了許多有效的電子郵件地址。名稱部分應該能夠包含字符!#$%&'* + -/=?^ _'{|}〜,如果地址的一部分出現在引號中,幾乎所有字符都會出現。 [來源](http://en.wikipedia.org/wiki/Email_address#Syntax)這些規則將過濾出有效(但不尋常)的電子郵件地址,如Paul + [email protected]或Timothy「@」Jones#3 @ example .ORG – thomasrutter

2

試試這個

var regexp=/^((([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; 

if(regexp.test(email)){ 
    // matched 
    }else{ 
    // not matched 
    } 
0

這裏試試這個 頭:

<script type="text/javascript"> 
function validateEmail(theForm) { 
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(theForm.email-id.value)) 
    { 
     return(true); 
    } 
    alert("Invalid e-mail address! Please enter again carefully!."); 
    return(false); 
} 
</script> 

身體:

<form onSubmit="return validateEmail(this);" action=""> 
E-mail Address: 
    <input type="text" name="emailid" /> 
    <input type="submit" value="Submit" /> 
    <input type="reset" value="Reset" /> 
</form>