2012-02-11 130 views
0

有人可以重寫這個JavaScript。現在的問題是,1個正則表達式是唯一的工作(從電子郵件中的一個)Javascript的正則表達式不工作

前面的問題:link 我建議這裏,但我想我把它不好的在我的代碼

function checkform (form) 
{ 
    var rex = /[^a-z]/i; 
    var regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 

    if (!regex.test(form.email.value)) 
    { 
     alert("Please enter youre valid email address."); 
     form.email.focus(); 
     return false ; 
    } 

    if (rex.test(form.name.value)) 
    { 
     alert("Please enter your name. no numbers or #$^& things allowed)."); 
     form.name.focus(); 
     return false ; 
    } 

    return true ; 
} 
+1

什麼不正常? '/ [^ a-z]/i'模式應該匹配任何非alpha字符。你用什麼輸入來測試? – 2012-02-11 22:02:27

+0

請閱讀下面的內容:http://stackoverflow.com/questions/46155/validate-email-address-in-javascript – cha0site 2012-02-11 22:07:54

+0

你應該刪除最後一個+後面的'([a-zA-Z0-9] {2,4 })+'tld-block,因爲它可以讓你基本上有任何大於2個字符的tld後綴。但除此之外,不應該有問題。順便說一句,即使你的RegExp應該滿足大多數需求,以防萬一你想看看_real_電子郵件驗證RegExp,你可以在[本頁](http://www.ex-parrot.com/pdw/ Mail-RFC822-Address.html) – Tharabas 2012-02-11 22:16:17

回答

0

假設你希望兩個表單字段的行爲方式相同,第一個被測試爲陰性。

你說的電子郵件一個作品,所以也許你的意思是寫if (! rex.test(for.name.value))

-1

這個怎麼樣。

"^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$" 
+0

OP說他的電子郵件RegEx正在工作 – 2012-02-11 22:08:00

+0

我現在正在測試所有的東西 – JochemQuery 2012-02-11 22:15:19