我如何使用 java 脚本和 html 验证 gmail 或 yahoo 电子邮件地址
how can i validate a gmail or yahoo email Address using java script and html
如何检查电子邮件地址是否包含 gmail 或 yahoo 地址?
我不需要确定它是否是真实的和活跃的,只是看看输入值是否识别出它是 gmail 还是 yahoo。
我写了这段代码,但它阻止了输入的任何值和 return 警报:
const singupVlidation = ()=>{
let email = document.forms['customerinfo']['email'].value;
let gmail = '@gmail.';
let yahoo = '@yahoo.';
if(email.indexOf(gmail) == -1 || email.indexOf(yahoo) == -1 ){
alert('invalid Email address, please correct')
return false;
}
else if(true){
window.location.href="singin.html";
return true;
}
}
这里是 html:
<form action="/singup" name="customerinfo" method="post" onsubmit="return singupVlidation()">
<input class="inpt" type="email" name="email" placeholder="Email">
<br>
<input type="submit" value="NEXT" class="submit">
</form>
如果我将代码更改为仅查找“@”然后它可以工作,我应该更改什么?
您if
的逻辑不正确。您使用的 ||
表示 OR
而您应该使用 &&
表示 AND
.
这是因为你想做的,翻译成英文是:
如果电子邮件不包含 @gmail
并且电子邮件不包含 @yahoo
,则给出错误。
所以将您的代码更改为
if(email.indexOf(gmail) == -1 && email.indexOf(yahoo) == -1 ){
此外,您如何搜索 @gmail.
并不是一个好的方法,因为您可能会遇到像 @gmail.myfakedomain.com
这样的假域,而您没有考虑 .ymail.com
您可能会更通过使用有效域的完整列表来精确,例如from here 然后完全匹配域,而不是使用 indexOf
.
进行字符串搜索
例如
const singupVlidation = ()=>{
// Define list of valid domains as an array
let domain_list = ['gmail.com', 'googlemail.co.uk', 'ymail.com', 'yahoo.com', 'yahoo.it', '......etc'];
let email = document.forms['customerinfo']['email'].value;
// Extract full domain from the email address
let domain = email.substring(email.lastIndexOf("@") +1);
// Check if the domain is present in the array of valid domains
if (domain_list.includes(domain)) {
window.location.href="singin.html";
return true;
} else {
alert('invalid Email address, please correct')
return false;
}
}
如何检查电子邮件地址是否包含 gmail 或 yahoo 地址? 我不需要确定它是否是真实的和活跃的,只是看看输入值是否识别出它是 gmail 还是 yahoo。 我写了这段代码,但它阻止了输入的任何值和 return 警报:
const singupVlidation = ()=>{
let email = document.forms['customerinfo']['email'].value;
let gmail = '@gmail.';
let yahoo = '@yahoo.';
if(email.indexOf(gmail) == -1 || email.indexOf(yahoo) == -1 ){
alert('invalid Email address, please correct')
return false;
}
else if(true){
window.location.href="singin.html";
return true;
}
}
这里是 html:
<form action="/singup" name="customerinfo" method="post" onsubmit="return singupVlidation()">
<input class="inpt" type="email" name="email" placeholder="Email">
<br>
<input type="submit" value="NEXT" class="submit">
</form>
如果我将代码更改为仅查找“@”然后它可以工作,我应该更改什么?
您if
的逻辑不正确。您使用的 ||
表示 OR
而您应该使用 &&
表示 AND
.
这是因为你想做的,翻译成英文是:
如果电子邮件不包含 @gmail
并且电子邮件不包含 @yahoo
,则给出错误。
所以将您的代码更改为
if(email.indexOf(gmail) == -1 && email.indexOf(yahoo) == -1 ){
此外,您如何搜索 @gmail.
并不是一个好的方法,因为您可能会遇到像 @gmail.myfakedomain.com
这样的假域,而您没有考虑 .ymail.com
您可能会更通过使用有效域的完整列表来精确,例如from here 然后完全匹配域,而不是使用 indexOf
.
例如
const singupVlidation = ()=>{
// Define list of valid domains as an array
let domain_list = ['gmail.com', 'googlemail.co.uk', 'ymail.com', 'yahoo.com', 'yahoo.it', '......etc'];
let email = document.forms['customerinfo']['email'].value;
// Extract full domain from the email address
let domain = email.substring(email.lastIndexOf("@") +1);
// Check if the domain is present in the array of valid domains
if (domain_list.includes(domain)) {
window.location.href="singin.html";
return true;
} else {
alert('invalid Email address, please correct')
return false;
}
}