如何在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)">
答
答
通过正则表达式验证电子邮件似乎是极其复杂的。
- How to Find or Validate an Email Address
- regexp-based address validation
- I Knew How To Validate An Email Address Until I Read The RFC
如果可能的话,你应该使用HTML5表单验证
<input type="email">
diveintohtml5.info是学习的好地方MOR e约为form validation。
据我所知,验证是浏览器端的事情,只能用sumbit按钮来工作。没有用于检查特定字符串是否有效的javascript api。
'return testx.test(aa)' elclanrs 2013-05-07 10:35:27
你认为你会保持这个正则表达式吗?你应该阅读[this](http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/)。 – 2013-05-07 10:35:30
'onchange =“return isEmail(this.value)”' - 除了我不认为你可以取消一个onchange事件。如果输入的值未通过验证,您希望实际发生什么? – nnnnnn 2013-05-07 10:37:23