我有 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
uj5u.com熱心網友回復:
很好的答案: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;
}
}
uj5u.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 = '[email protected]';
console.log(validateEmailChars(testString1));
console.log(validateEmailChars(testString2));
console.log(validateEmailChars(testString3));
console.log(validateEmailChars(testString4));
//should all return true
var testString5 = '[email protected]';
console.log(validateEmailChars(testString5));
//should return false
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334549.html
標籤:javascript 节点.js 反应 正则表达式
