2013-05-07 92 views
1

我在JavaScript中有以下電子郵件驗證正則表達式。它實際上不會返回任何東西,但我認爲它應該(真或假)。如何在JavaScript中使用正則表達式驗證電子郵件地址?

這段代碼有什麼問題?

function isEmail(aa){ 
    var testx=/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/ 
    return testx.test(aa); 
} 

<input type="text" name="email" id="email" onChange="isEmail(this.value)"> 
+1

'return testx.test(aa)'< - variable not string – elclanrs 2013-05-07 10:35:27

+5

你認爲你會保持這個正則表達式嗎?你應該閱讀[this](http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/)。 – 2013-05-07 10:35:30

+0

'onchange =「return isEmail(this.value)」' - 除了我不認爲你可以取消一個onchange事件。如果輸入的值未通過驗證,您希望實際發生什麼? – nnnnnn 2013-05-07 10:37:23

回答

1

你正在測試的字符串'aa',改變

return testx.test('aa'); 

return testx.test(aa); 

參見:jsFiddle Demo

+0

我剛看到並編輯它,它根本沒有幫助。瀏覽器仍然不會返回任何內容。 – Ghozt 2013-05-07 10:38:32

+0

@Ghozt好吧,除此之外,它似乎工作正常 – 2013-05-07 10:41:39

+0

啊,它的工作!謝謝。 – Ghozt 2013-05-07 10:46:47

0

通過正則表達式驗證電子郵件似乎是極其複雜的。

如果可能的話,你應該使用HTML5表單驗證

<input type="email">

diveintohtml5.info是學習的好地方MOR e約爲form validation

據我所知,驗證是瀏覽器端的事情,只能用sumbit按鈕來工作。沒有用於檢查特定字符串是否有效的javascript api。

相關問題