Javascript 提交时的Regex电子邮件验证

Javascript 提交时的Regex电子邮件验证,javascript,jquery,html,Javascript,Jquery,Html,我想在提交时通过正则表达式对电子邮件进行非常基本的jQuery验证。我的HTML: <form action="POST" id="form"> <input type="email" id="customer_email" placeholder="email here" /> <input type="submit" /> </form> 据我所知,为了使其工作,我需要通过电子邮件输入获取输入值(我在第4行这样做),并在其上运行正则表达式 单

我想在提交时通过正则表达式对电子邮件进行非常基本的jQuery验证。我的HTML:

<form action="POST" id="form">
<input type="email" id="customer_email" placeholder="email here" />
<input type="submit" />
</form>
据我所知,为了使其工作,我需要通过电子邮件输入获取输入值(我在第4行这样做),并在其上运行正则表达式

单击“提交”时,表单上会出现标准输入错误,而不是窗口警报。请在此处随意查看概述此内容的代码笔:

您需要添加
事件.preventDefault()
以防止实际表单提交,并在输入上使用
.val()
而不是
.value()

$('#form').submit(function(event) {
    event.preventDefault();
    var email_reg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

    var emailinput = $('#customer_email').val();

    if (email_reg.test(emailinput) == false) {
        window.alert('no good');
    }
});

通过将您的输入声明为
type=“email”
您的浏览器将执行有效性检查(您不需要自己进行检查),如果您想避免这种情况,请使用
type=“text”

您需要添加
事件.preventDefault()
以防止实际的表单提交,并使用
.val()
而不是
.value>()
输入

$('#form').submit(function(event) {
    event.preventDefault();
    var email_reg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;

    var emailinput = $('#customer_email').val();

    if (email_reg.test(emailinput) == false) {
        window.alert('no good');
    }
});

通过将您的输入声明为
type=“email”
您的浏览器将进行有效性检查(您不需要自己进行检查),如果您想避免使用
type=“text”

的话,我使用这封电子邮件测试了您的正则表达式:“2039i#@gmail.com”,它工作得很好。它提醒了您的警告消息(“不好”)。您尝试了什么电子邮件?可能需要为您的情况更改正则表达式。我在我的个人网站上使用正则表达式,效果很好。问题是我使用了
type=“email”
,我猜它会覆盖JS验证。我使用以下电子邮件测试了您的正则表达式:“2039i#@gmail.com”,它工作正常。它提醒了您的警告消息(“不好”)。你尝试了什么电子邮件?也许你的案例需要更改正则表达式。我在我的个人网站上使用正则表达式,效果很好。问题是我使用的是
type=“email”
,我想它会覆盖JS验证。哦,我明白了。所以如果你使用
type=“email”“
浏览器进行有效性检查并覆盖JS?我不知道。不会
e.preventDefault();
不允许这种情况发生吗?@kawnah
e.preventDefault()
只是阻止提交。老实说,我不知道为什么Javascript会被完全跳过,为什么会这样交互,我想我明白了。所以如果使用
type=“email”
浏览器会进行有效性检查并覆盖JS?我不知道。不会
e.preventDefault()
不允许这种情况发生?@kawnah
e.preventDefault()
只是阻止提交。老实说,我不知道为什么Javascript会被完全跳过,为什么它会这样交互,我猜是奇怪的浏览器怪癖