Javascript 验证表明我的所有电子邮件地址都无效

Javascript 验证表明我的所有电子邮件地址都无效,javascript,regex,Javascript,Regex,我不知道为什么它总是告诉我这是一个无效的电子邮件地址,即使它是正确的。有什么想法吗 我的表格 <form id="FormViewForm" method="post" action="/NewsletterMailer/subscribe/4" accept-charset="utf-8"> <input type="hidden" name="_method" value="POST" /> <

我不知道为什么它总是告诉我这是一个无效的电子邮件地址,即使它是正确的。有什么想法吗

我的表格

  <form id="FormViewForm" method="post" action="/NewsletterMailer/subscribe/4" accept-charset="utf-8">
                <input type="hidden" name="_method" value="POST" />
                <input type="hidden" name="data[Form][id]" value="4" id="FormId" />
                <input type="hidden" name="data[Form][type]" value="1" id="FormType" />
                <input type="email" name="data[Form][e-mail]" value="" id="subscribe-email" placeholder="Enter your email..." required>
                    <input type="submit" value="+" class="large" id="subscribe-submit">
                        </form>

仅仅是一个jQuery选择器问题,您就缺少了一个

函数以电子邮件形式接收未定义的,正则表达式失败

您还可以使用纯JavaScript。(请注意,
document.getElementById
不需要
#
,这可能会导致混淆。)


仅仅是一个jQuery选择器问题,您就缺少了一个

函数以电子邮件形式接收未定义的,正则表达式失败

您还可以使用纯JavaScript。(请注意,
document.getElementById
不需要
#
,这可能会导致混淆。)


请使用正确的选择器 如果要将用户id作为选择器

validateEmail($('#subscribe-email').val());
或者您也可以使用输入标记作为选择器

validateEmail($('input[type=email]').val());
id选择器对所有浏览器都很强大,使用起来也很安全

请尝试此代码

$('#FormViewForm').submit(function() {
    validateEmail($('#subscribe-email').val());
    return false;
});

function validateEmail(email) {
    var re = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
    if (re.test(email)) {
        if (email.indexOf('@c-e.com', email.length - '@c-e.com'.length) !== -1) {
            alert('Submission was successful.');
        } else {
            alert('Email must be a CE e-mail address (your.name@c-e.com).');
        }
    } else {
        alert('Not a valid e-mail address.');
    }
}

请使用正确的选择器 如果要将用户id作为选择器

validateEmail($('#subscribe-email').val());
或者您也可以使用输入标记作为选择器

validateEmail($('input[type=email]').val());
id选择器对所有浏览器都很强大,使用起来也很安全

请尝试此代码

$('#FormViewForm').submit(function() {
    validateEmail($('#subscribe-email').val());
    return false;
});

function validateEmail(email) {
    var re = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
    if (re.test(email)) {
        if (email.indexOf('@c-e.com', email.length - '@c-e.com'.length) !== -1) {
            alert('Submission was successful.');
        } else {
            alert('Email must be a CE e-mail address (your.name@c-e.com).');
        }
    } else {
        alert('Not a valid e-mail address.');
    }
}

我的解决方案很简单,不验证电子邮件,只需检查它是否有
@
,然后发送确认电子邮件;真正的验证。如果我不得不胡乱猜测,那应该是这样一行:
if(email.indexOf('@c-e.com',email.length-'@c-e.com.length)!=-1)
。这并不意味着什么sense@elclanrs也许有点快,比如空格?右半部分至少有一个点<代码>^[^]@[^]\.[^]$@remu:是的,过于简单化了,我通常使用类似于
/[^@]+@[^@]/
@elclanrs的东西是的——虽然可能不是@也不是空格。:)我的解决方案很简单,不验证电子邮件,只需检查它是否有
@
,然后发送确认电子邮件;真正的验证。如果我不得不胡乱猜测,那应该是这样一行:
if(email.indexOf('@c-e.com',email.length-'@c-e.com.length)!=-1)
。这并不意味着什么sense@elclanrs也许有点快,比如空格?右半部分至少有一个点<代码>^[^]@[^]\.[^]$@remu:是的,过于简单化了,我通常使用类似于
/[^@]+@[^@]/
@elclanrs的东西是的——虽然可能不是@也不是空格。:)