用JavaScript验证电子邮件

时间:2011-10-14 14:06:46

标签: javascript regex validation

我必须实施电子邮件验证,以便电子邮件地址无法以点开头或结尾。

代码如下:

function validateEmail(elementValue)
{
   var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;

   return emailPattern.test(elementValue);
}

6 个答案:

答案 0 :(得分:1)

var emailAddressPattern = /(((\ s *([^ \ x00- \ x1F \ x7F()<> [] :; @ \,。“\ s] +(。[^ \ x00- \ x1F的\ 0x7F部分()<> []:; @ \ ,. “\ S] +))\ S )|(\ S *”(([^ \“])|( \([^ \ X0A \ X0D])))+“\ S *))\ @((\ S *([^ \ x00- \ x1F的\ 0x7F部分()<> []:; @ \ ,. “\ S] +([^ \ x00- \ x1F的\ 0x7F部分()<> []:; @ \ ,.” \ S] +))\ S )|(\ S * [(\ S *(([^ [] \])|(\([^ \ X0A \ X0D])))+) \ S ] \ S *)))/;

答案 1 :(得分:1)

为了确保它不以句点/点/小数点开头,您可以进行的最简单的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,这些TLD会因{2,4}长度限制而失效

答案 2 :(得分:0)

您必须在正则表达式中定义:

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_-]现在已经占据了至少一个字符。

你的正则表达式已经说它不应该以点结尾,因为你最后需要2到4个字母。

在最后i之后使用/标记,您可以删除a-zA-Z并仅使用a-z(或A-Z),因为它意味着“不敏感的”。

答案 3 :(得分:0)

请注意,验证电子邮件地址非常困难。你几乎肯定会弄错 - 即过于严格 - 如果你试图自己做的话。你看过the RFC吗?

这里有更多信息:

该页面将多个正则表达式与多个输入进行比较,包括两个直接满足您要求的输入:

  • .local-starts-with-dot@sld.com
  • local-ends-with-dot.@sld.com

阅读更多:

答案 4 :(得分:0)

电子邮件地址的RFC为电子邮件地址提供了大量空间,包括使用的字符,电子邮件地址的长度。 几乎在所有应用中都是实用的:

  1. 电子邮件字段
  2. 的列长度是固定的
  3. 字符集固定在数据库端
  4. 因此,对于使用标准正则表达式验证电子邮件地址的所有真实应用程序应该没有问题,除非您是政府,您有法律义务支持有效的电子邮件地址。

    任何使用世界各地的真实世界用户,符合RFC标准的电子邮件地址都将面临足够多次挑战,并会改变它。

答案 5 :(得分:0)

<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>