JavaScript中的电子邮件验证
Email verification in JavaScript
我必须实现电子邮件验证,这样电子邮件地址就不能以句点开头或结尾。
代码如下:
function validateEmail(elementValue)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+'.[a-zA-Z]{2,4}$/;
return emailPattern.test(elementValue);
}
为了确保它不会以句点/句点/小数点开头,您可以进行的最简单的JavaScript兼容更改是在表达式的开头使用负前瞻,如:(?!'.)
:
function validateEmail(elementValue)
{
var emailPattern = /^(?!'.)[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+'.[a-zA-Z]{2,4}$/;
return emailPattern.test(elementValue);
}
有很多情况无法处理,根据您的原因,这可能是创建一个完美的符合RFC-2822标准的电子邮件地址所需要的数千件事情之一(我不认为这在任何商业上可行的系统中或"野外"中真的存在(,您真的不需要担心。
您还可以通过使其不区分大小写来进一步简化它:
/(?!'.)[a-z0-9._-]+@[a-z0-9.-]+'.[a-z]{2,4}/i
甚至更好。。。
/(?!'.)['w.-]+@[a-z0-9.-]+'.[a-z]{2,4}/i
并且您可能需要考虑(如果您还没有考虑的话(.travel
和.museum
TLD,它们将因{2,4}
长度限制而无效
var emailAddressPattern=/((''s*([^''x00-''x1F''x7F((<>[]:;@'',。"''s]+(.[^''x00-''x1F''x7F((<>[]:;@'',."''s]+((''s(|(''s*"(([^''"](|(''([^''x0A''x0D](((+"''s*((''@((''s*([^#x00-''x4F''x7F,。"''s]+((''s(|(''s*[(''s*(([^[]''](|(''([^''x0A''x0D]((+(''s]''s*((/;
您必须在正则表达式中定义:
var emailPattern = /^[a-z0-9_-][a-z0-9._-]*@[a-z0-9.-]+'.[a-z]{2,4}$/i;
[a-z0-9_-]
表示:集合a-z0-9_-
的1个字符(因此不是点(。我还将+
更改为*
,因为[a-z0-9_-]
现在已经占了至少一个字符。
您的regexp已经指出它不应该以句点结尾,因为您需要在末尾有2到4个字母。
如果i
标志位于最后一个/
之后,则可以消除a-zA-Z
,只使用a-z
(或A-Z
(,因为它的意思是"不区分大小写"。
请注意,验证电子邮件地址是出了名的困难。如果你试着自己去做,你几乎肯定会犯错——也就是说太严格了。你读过RFC吗?
这里有更多信息:
- 比较电子邮件地址验证正则表达式
该页面将许多正则表达式与几个输入进行比较,其中包括两个直接满足您需求的表达式:
.local-starts-with-dot@sld.com
local-ends-with-dot.@sld.com
更多阅读:
- http://www.regular-expressions.info/email.html
- http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx
电子邮件地址的RFC为电子邮件地址提供了很大的空间,包括使用的字符和电子邮件地址的长度。用于几乎所有应用程序的实际用途:
- 电子邮件字段的列长度是固定的
- 字符集固定在数据库端
因此,对于所有使用标准正则表达式验证电子邮件地址的真实应用程序来说,应该是可以的,除非你是政府,你有法律义务支持有效的电子邮件地址。
任何使用符合RFC的真实世界用户的电子邮件地址都将面临足够多次的挑战,并将更改它。
<input type='text' id='emailInput'/>
<input type='submit' name='submit' onclick='Javascript:validateEmail();'/>
<script language="javascript">
function validateEmail() {
var email = document.getElementById('emailInput');
var filter = /^([a-zA-Z0-9_'.'-])+'@(([a-zA-Z0-9'-])+'.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(email.value)) {
alert('Please provide a valid email address');
email.focus;
return false;
}
}</script>
- javascript中添加验证电子邮件的问题
- 如何测试变量是否只有字母而不是abc1.关于验证电子邮件
- jquery通过ajax验证电子邮件,然后再通过ajax提交表单
- JavaScript通过SMTP验证电子邮件
- 如何使用Selenium Web驱动程序验证电子邮件
- 使用不带正则表达式的jscript验证电子邮件地址
- 在passport.js中使用令牌验证电子邮件
- 使用JavaScript或JQuery验证电子邮件地址
- 使用Regex验证电子邮件id长度
- 如何在文本字段Appcelerator中输入文本后验证电子邮件
- Javascript/jQuery像浏览器一样验证电子邮件
- 如何使用正则表达式根据javascript中的php电子邮件注入验证电子邮件地址
- 如何在javascript中验证电子邮件
- 在使用jquery验证电子邮件之后添加一个类
- 验证电子邮件时无法阻止表单提交
- 使用正则表达式验证电子邮件地址
- 调用外部JS函数验证电子邮件
- JavaScript 验证电子邮件地址没有响应
- 在 JavaScript 中验证电子邮件地址
- 验证电子邮件地址