如何在JavaScript中使用正则表达式验证电子邮件地址?

问题描述:

我在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)' 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

你正在测试的字符串'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

通过正则表达式验证电子邮件似乎是极其复杂的。

如果可能的话,你应该使用HTML5表单验证

<input type="email">

diveintohtml5.info是学习的好地方MOR e约为form validation

据我所知,验证是浏览器端的事情,只能用sumbit按钮来工作。没有用于检查特定字符串是否有效的javascript api。