【问题标题】:How to validate input for only email friendly characters?如何仅验证电子邮件友好字符的输入?
【发布时间】:2023-04-03 21:22:01
【问题描述】:

我有 JavaScript 可以在输入后验证整个电子邮件:

function ValidateEmail(inputText)
{
    var mailformat = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
    if(inputText.value.match(mailformat))
    {
        alert("This is not a valid email address");
        return false;
        }
}

但是如何检查单个字符是否对电子邮件有效? 所以我想防止用户输入错误的电子邮件字符。 因此,函数参数将是这些,并且仅在存在无效字符时才应返回 false:

m
my
mya
....
myaddress
....
myaddress@mail.com

【问题讨论】:

  • 使用mailformat.test(inputText.value)。见RegExp.prototype.test()
  • 你为什么不用<input type="email" />,省点麻烦呢?
  • @Andy,我认为这仅适用于客户端验证,不适用于服务器端验证。
  • OP 有React 作为标签,所以我假设电子邮件地址来自那里。 @user11823877
  • @Andy,知道了。它也有 nodejs 标签。所以只是想确认一下。我也认为我们需要为 type="email" 添加模式来验证。

标签: javascript node.js reactjs regex


【解决方案1】:

很好的答案: https://stackoverflow.com/a/46181/3764369

问题遵循 RFC 5322 https://emailregex.com/

w3 代码示例:

function ValidateEmail(inputText)
{
  var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
  if(inputText.value.match(mailformat))
  {
    alert("Valid email address!");
    document.form.email.focus();
    return true;
  }
  else
  {
    alert("You have entered an invalid email address!");
    document.form.email.focus();
    return false;
  }
}

【讨论】:

    猜你喜欢
    • 2018-01-12
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2014-04-14
    相关资源
    最近更新 更多