简体   繁体   English

如何仅验证电子邮件友好字符的输入?

[英]How to validate input for only email friendly characters?

I have JavaScript that validates whole email once entered:我有 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;
        }
}

But how to check if single character is valid for email?但是如何检查单个字符是否对电子邮件有效? So I want to prevent users to enter bad email characters.所以我想防止用户输入错误的电子邮件字符。 So function param would be these and should return false only if invalid character present:因此,函数参数将是这些,并且仅当存在无效字符时才应返回 false:

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

You could test the individual characters your user submits with a function like this.您可以使用这样的函数测试用户提交的单个字符。 Since the allowable characters are limited to letters (az), numbers, underscores, periods, and dashes.由于允许的字符仅限于字母 (az)、数字、下划线、句点和破折号。

 /* function that validates input for only email friendly characters */ function validateEmailChars(input) { var validCharacters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@._-'; for (var i = 0; i < input.length; i++) { if (validCharacters.indexOf(input[i]) === -1) { return false; } } return true; } var testString1 = 'm' var testString2 = 'my' var testString3 = 'mya'; var testString4 = 'myaddress@mail.com'; console.log(validateEmailChars(testString1)); console.log(validateEmailChars(testString2)); console.log(validateEmailChars(testString3)); console.log(validateEmailChars(testString4)); //should all return true var testString5 = 'my~address@mail.com'; console.log(validateEmailChars(testString5)); //should return false

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

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

w3 code example: 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;
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM