是否有正则表达式来验证JavaScript中的电子邮件地址?
如何在JavaScript中验证电子邮件地址
Microsoft在ASP.NET MVC中提供的正则表达式为
/^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$/
如果存在缺陷,我会在此处发布-尽管它始终非常适合我的需求。
显然,就是这样:
/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i
取自10年10月1日http://fightingforalostcause.net/misc/2006/compare-email-regex.php。
但是,当然,这忽略了国际化。
这是有关使用正则表达式验证电子邮件地址的很好的讨论。“ 比较验证正则表达式的电子邮件地址 ”
这是当前与JavaScript兼容的顶级表达式,仅供参考:
/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
很难使电子邮件验证程序100%正确。使其正确的唯一真实方法是向该帐户发送测试电子邮件。也就是说,有一些基本的检查可以帮助确保您得到的东西合理。
一些需要改进的地方:
代替new RegExp
,只需尝试regexp
像这样写出:
if (reg.test(/@/))
其次,检查以确保在@
符号后有一个句点,并确保在@
s和句点之间有字符。
在验证函数中使用以下代码:
var emailID = document.forms["formName"]["form element id"].value;
atpos = emailID.indexOf("@");
dotpos = emailID.lastIndexOf(".");
if (atpos < 1 || ( dotpos - atpos < 2 ))
{
alert("Please enter correct email ID")
return false;
}
否则,您可以使用jQuery。内部规则定义:
eMailId: {
required: true,
email: true
}
这是节点验证器的操作方式:
/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/
只需使用HTML来检查输入的电子邮件地址是否有效。
<input type="email"/>
无需编写任何函数进行验证。
所有电子邮件地址都包含一个“ @”符号。测试必要条件:
email.indexOf("@") > 0
不要为更复杂的事情而烦恼。即使您可以完美地确定电子邮件在RFC语法上是否有效,也不会告诉您电子邮件是否属于提供电子邮件的人。那才是真正重要的。
要进行测试,请发送验证消息。
哇,这里有很多复杂性。如果您只想捕捉最明显的语法错误,我将执行以下操作:
^\S+@\S+$
它通常会捕获用户所犯的最明显的错误,并确保表单最正确,这就是JavaScript验证的全部内容。
对于需要真正简单验证的人,我对Jaymon的答案做了一些修改:
anystring@anystring.anystring
正则表达式:
/\S+@\S+\.\S+/
JavaScript函数示例:
function validateEmail(email)
{
var re = /\S+@\S+\.\S+/;
return re.test(email);
}
在决定使用正则表达式验证电子邮件时,您需要了解一些内容:这可能不是一个好主意。一旦您对此有所了解,就有许多实现可以使您半途而废,本文对它们进行了很好的总结。
简而言之,唯一可以绝对肯定地确定用户输入的实际上是电子邮件的唯一方法是实际发送电子邮件并查看会发生什么。除此之外,所有这些只是猜测。