我正在学习如何使用正则表达式来验证符合以下条件的电子邮件地址:
如果user@domain.extension 的 domain 和 extension 为 example123.com ,并且 user 的值满足以下约束:
理想地...
re.test(logic@example123.com) --> should return true
re.test(logic_@example123.com) --> should return true
re.test(logic_0@example123.com) --> should return true
re.test(logic2_0@example123.com) --> should return false
re.test(logic_0@gmail.com) --> should return false
到目前为止,我有:const re = /^[a-z]{1,6}[_?][\d?]{0,4}+@[example123\.com]$/ig
我收到一条错误消息:“没有重复”。我已经浏览了其他stackoverflow帖子,但仍然无法完全理解为什么我的模式无法正常工作。
答案 0 :(得分:1)
在\d{0,4}+
中,+
不能作为{0,4}
的量词,因此它没有“重复的内容”。可以是\d{0,4}
或\d+
。
此外,方括号用于字符范围或乱写字符。不要在[_?]
中使用它们,在这里将其解释为搜索_
或?
。
由于您不想在电子邮件中使用大写字母,因此必须删除正则表达式中的i
修饰符,该修饰符会忽略大小写。
尝试一下:
const re = /^[a-z]{1,6}_?\d{0,4}@example123\.com$/
console.log(re.test("logic@example123.com"));
答案 1 :(得分:0)
尝试一下:
^[a-z]{1,6}_?\d{0,4}?@(example123\.com)$
答案 2 :(得分:-1)
尝试使用此功能验证电子邮件
function validateEmail(sEmail) {
var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
if (filter.test(sEmail)) {
return true;
} else {
return false;
}
}