【问题标题】:One @ in email address [duplicate]电子邮件地址中的一个@ [重复]
【发布时间】:2013-05-15 13:57:27
【问题描述】:

我希望电子邮件地址中只允许一个 at 符号,并且只包含(a-z、A-Z、下划线 (_)、点 (.) 和破折号 (-))。这就是我到目前为止所拥有的。 谢谢

var email = document.forms["register"]["email"].value;
var atpos = email.indexOf("@");
var dotpos = email.lastIndexOf(".");

if (atpos < 3 || dotpos < atpos + 4 || dotpos + 2 >= email.length)
{                   
    alert("You have not entered a valid Email address, please check for mistakes and re-submit");
    return false;
}

【问题讨论】:

  • 我的电子邮件地址包含数字...
  • &lt;input type="email"&gt;
  • 你为什么要禁止我完美的电子邮件地址'@example.com

标签: javascript validation


【解决方案1】:

你想要的是一个叫做regular expression的东西。基本上,您可以指定一个模式并让 javascript 检查您的输入以查看它是否与该模式匹配。如果输入是有效的电子邮件地址,则以下 javascript 函数应返回 true,尽管有很多主题讨论哪种正则表达式最适合此目的。

function emailIsValid(email) { 
    var regex = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
    return regex.test(email);
} 

【讨论】:

  • 比这复杂得多。见stackoverflow.com/questions/201323/…
  • 正则表达式可能要复杂得多,但必须在“它会验证世界上的每一个电子邮件地址”和“我是否需要它变得那么准确”之间取得平衡。我提供的正则表达式是可以接受的,并且 99% 的时间都可以使用。然而,我知道有些人更喜欢更准确的解决方案,但我确实指出,关于哪种正则表达式最适合使用存在很多讨论。
  • @Maloric 是的,这已经在 SO 上进行了多次彻底讨论。这就是你被否决的原因。
猜你喜欢
  • 2021-08-29
  • 2019-12-17
  • 2010-11-04
  • 1970-01-01
  • 2015-11-19
  • 2018-08-21
  • 1970-01-01
  • 2021-04-03
  • 2013-03-25
相关资源
最近更新 更多