正则表达式一般用于匹配、搜索、替换符合特定模式的字符串。在工作场景中我们经常会使用正则表达式来匹配邮箱格式,由于邮箱规范比较复杂,想要完全匹配需要很复杂的代码,下面是使用一个较为宽松的正则表达式来匹配大多数常见的邮箱地址格式,已经够用啦!
1.首先介绍邮箱结构
一个标准的电子邮件地址通常由以下几部分组成:
- 本地部分(local-part):可以包含字母、数字、点(
.
)、下划线(_
)、连字符(-
)等字符。 - @符号:分隔本地部分和域名部分。
- 域名部分(domain):由字母、数字、点(
.
)、连字符(-
)组成,并且必须以字母或数字开头和结尾,中间可以包含若干由点分隔的子域。 - 顶级域名(TLD):域名部分的最后一部分,通常由2到6个字母组成
2.邮箱匹配的正则表达式
下面代码示例是使用一个较为宽松的正则表达式来匹配大多数常见的邮箱地址格式
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
3.在 JavaScript 中使用正则表达式匹配邮箱地址
// 定义正则表达式
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
// 测试一些邮箱地址
const testEmails = [
"example@example.com",
"user.name+tag+sorting@example.com",
"user-name_123@sub.example.com",
"invalid-email@",
"another.invalid@example..com",
"bad-email@com"
];
testEmails.forEach(email => {
if (emailRegex.test(email)) {
console.log(`${email} 是有效的邮箱地址。`);
} else {
console.log(`${email} 是无效的邮箱地址。`);
}
});
//下面是输出结果:
example@example.com 是有效的邮箱地址。
user.name+tag+sorting@example.com 是有效的邮箱地址。
user-name_123@sub.example.com 是有效的邮箱地址。
invalid-email@ 是无效的邮箱地址。
another.invalid@example..com 是无效的邮箱地址。
bad-email@com 是无效的邮箱地址。