我如何使用 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;
    }
}