使用正则表达式验证电子邮件,其中域部分中的扩展名数量可能会有所不同
Validate Email with regular expression where the number of extensions in the domain part can vary
我需要一个正则表达式来匹配这样的模式。我试过用这个 -
if(str.match(/^([a-zA-Z-\.]+)@([a-zA-Z]{1,5})\.([a-zA-Z]{1,5})(\.[a-zA-Z]{1,5})?(\.[a-zA-Z]{2,3})?$/)){
console.log("the email is valid");
}
但这将 user@aaa.bb.cccc 视为有效,而它应该 不是 。
邮箱有效的全部要求-
电子邮件的用户名部分只能包含单词(不区分大小写)、点 (.) 和破折号 (-)。长度
1 个或多个字符。
域名部分可以有2到4个后缀。比如username@ext.ext.ext.ext这个
电子邮件有 4 个扩展名。
所有分机只能有单词(不区分大小写),长度可以为1到5个字符
long 除了最后一个扩展名。最后一个扩展名的长度只能是 2 到 3 个字符。为了
例如,
user@aaa.bb.cccc.dd 有效
user@aaa.bv.cccc 无效
我在解决这部分问题时遇到了问题。由于扩展计数可能会有所不同,我不知道如何检查电子邮件的最后部分是否只有 2
到 3 个字符?
我知道这类问题以前可能有人回答过。我是正则表达式的新手,我找不到解决问题的方法。
您可以在 @.
之后匹配一个 [a-zA-Z]{1,5}
再匹配0到2次\.[a-zA-Z]{1,5}
,最后再匹配\.[a-zA-Z]{2,3}
,共匹配2-4个部分
^[a-zA-Z.-]+@[a-zA-Z]{1,5}(?:\.[a-zA-Z]{1,5}){0,2}\.[a-zA-Z]{2,3}$
如果你想匹配“单词”,你也可以使用 \w
而不是使用 [a-zA-Z]
来匹配数字和 _
const pattern = /^[a-zA-Z.-]+@[a-zA-Z]{1,5}(?:\.[a-zA-Z]{1,5}){1,2}\.[a-zA-Z]{2,3}$/;
[
"user@aaa.bb.cccc.dd",
"user@aaa.bb.cccc.dd.ee",
"user@aaa.bv.cccc"
].forEach(s => {
console.log(`the email is ${pattern.test(s) ? "" : "not "}valid for ${s}`)
});
我需要一个正则表达式来匹配这样的模式。我试过用这个 -
if(str.match(/^([a-zA-Z-\.]+)@([a-zA-Z]{1,5})\.([a-zA-Z]{1,5})(\.[a-zA-Z]{1,5})?(\.[a-zA-Z]{2,3})?$/)){
console.log("the email is valid");
}
但这将 user@aaa.bb.cccc 视为有效,而它应该 不是 。
邮箱有效的全部要求-
电子邮件的用户名部分只能包含单词(不区分大小写)、点 (.) 和破折号 (-)。长度 1 个或多个字符。
域名部分可以有2到4个后缀。比如username@ext.ext.ext.ext这个 电子邮件有 4 个扩展名。
所有分机只能有单词(不区分大小写),长度可以为1到5个字符 long 除了最后一个扩展名。最后一个扩展名的长度只能是 2 到 3 个字符。为了 例如,
user@aaa.bb.cccc.dd 有效
user@aaa.bv.cccc 无效
我在解决这部分问题时遇到了问题。由于扩展计数可能会有所不同,我不知道如何检查电子邮件的最后部分是否只有 2 到 3 个字符?
我知道这类问题以前可能有人回答过。我是正则表达式的新手,我找不到解决问题的方法。
您可以在 @.
之后匹配一个[a-zA-Z]{1,5}
再匹配0到2次\.[a-zA-Z]{1,5}
,最后再匹配\.[a-zA-Z]{2,3}
,共匹配2-4个部分
^[a-zA-Z.-]+@[a-zA-Z]{1,5}(?:\.[a-zA-Z]{1,5}){0,2}\.[a-zA-Z]{2,3}$
如果你想匹配“单词”,你也可以使用 \w
而不是使用 [a-zA-Z]
来匹配数字和 _
const pattern = /^[a-zA-Z.-]+@[a-zA-Z]{1,5}(?:\.[a-zA-Z]{1,5}){1,2}\.[a-zA-Z]{2,3}$/;
[
"user@aaa.bb.cccc.dd",
"user@aaa.bb.cccc.dd.ee",
"user@aaa.bv.cccc"
].forEach(s => {
console.log(`the email is ${pattern.test(s) ? "" : "not "}valid for ${s}`)
});