[英]How to validate input for only email friendly characters?
我有 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
您可以使用这样的函数测试用户提交的单个字符。 由于允许的字符仅限于字母 (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
很好的答案: 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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.