2010-07-27 173 views
0

我使用下面的JavaScript正則表達式驗證電子郵件功能,但它似乎doen't工作爲什麼....這個javascript函數有什麼問題?

function IsValidEmail(email) { 
    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})(\]?)$/; 
    return filter.test(email); 
} 

function forgetpassword() { 
    if (document.getElementById("ctl00_TxtEmailId").value == "") { 
     return false;// this condition gets exected so no prob with my txtboxID 
    } 
    if (document.getElementById("ctl00_TxtEmailId").value != "") { 
     return IsValidEmail(document.getElementById("ctl00_TxtEmailId").value); 
    } 
    return true; 
} 

我失敗了輸入test,[email protected] and also [email protected]

傢伙我的文本框是一個facebox模式彈出內....當我嘗試alert(document.getElementById("ctl00_TxtEmailId").value與一些文字jsadf警報顯示沒有...爲什麼?

+0

你是什麼意思「不起作用」?假陽性還是假陰性? – kennytm 2010-07-27 10:52:57

+0

@KennyTM它不會爲有效的電子郵件ID返回true – 2010-07-27 10:54:18

+0

「過濾器」很可能也是錯誤的。 – Anders 2010-07-27 10:54:28

回答

1

我會改變正則表達式爲類似

/^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/ 

,我會改寫忘記給

function forgetpassword() { 
    return IsValidEmail(document.getElementById("ctl00_TxtEmailId").value); 
} 

編輯:功能齊全

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

在Chrome/IE8 IsValidEmail('[email protected]') -> true

+1

'.museum'呢? – Gumbo 2010-07-27 11:02:56

+0

它沒有工作... – 2010-07-27 11:04:25

+0

你檢查了document.getElementById(「ctl00_TxtEmailId」)的值嗎?我沒有這個片段的問題。 – 2010-07-27 11:10:54

0

想試試這個嗎?

/^[a-zA-Z][\w.-] [a-zA-Z0-9] @ [a-zA-Z0-9] [\ w.-] [a-zA -Z0-9]。[a-zA-Z] [a-zA-Z。] * [a-zA-Z] $/