【发布时间】:2017-07-20 22:15:54
【问题描述】:
我有一个在提交表单时触发的 handleSubmit 函数。我正在收集用户电子邮件作为输入。我现有的代码不会拒绝无效条目,我不确定我错过了什么......
理想情况下,无效响应将触发警报框,但目前所有输入都被推送到数据库。
const handleSubmit = (e) => {
let participantsName = e.target.participantsName.value;
let participantsEmail = e.target.participantsEmail.value;
let pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;
e.preventDefault();
if (participantsName) {
e.target.participantsName.value = "";
Participants.insert({
name: participantsName
});
}
if (participantsEmail.match(pattern)) {
e.target.participantsEmail.value = "";
Participants.insert({
email: participantsEmail
});
alert("Please enter a valid email address")
}
}
【问题讨论】:
-
那你有什么问题?
-
为什么
alert("Please enter a valid email address")在检查电子邮件是否匹配模式的if中?它应该在外面,在else子句中。 -
你能举一个你的程序没有捕捉到的无效输入的例子吗?
-
@Catalyst:感谢您的关注,我会相应更新。
-
您的正则表达式在很多层面上都是错误的...例如,有几个有效的 TLD 长度超过 3 个字符。 softwareengineering.stackexchange.com/questions/78353/…
标签: javascript regex email-validation