如何去除电子邮件地址末尾的多余字符?
解决邮箱末尾多余字符的问题
问题原因
你当前的正则表达式会将aa@aaa.comwww这类带多余后缀的字符串完整匹配为邮箱,因为域名部分的规则允许任意字母数字组合,导致comwww被误判为合法域名后缀。
修复方案
我们可以在匹配到疑似邮箱后,通过正则替换移除末尾的多余字符:只保留最后一个.后的有效顶级域名(2-6位字母),截断后续所有多余字符,同时用Set优化去重逻辑。
修改后的代码
JavaScript 代码
const txtContent = document.getElementById("txtContent"); function checkEmails() { const temp = txtContent.value; // 匹配包含可能多余后缀的邮箱格式 const regexp = /([A-Za-z0-9._-]+@[A-Za-z0-9._-]+\.[A-Za-z0-9_-]+)/gi; const emailsRaw = temp.match(regexp); if (!emailsRaw) return []; // 清理每个邮箱:保留最后一个.后的有效顶级域名,移除后续多余字符 const cleanedEmails = emailsRaw.map(email => email.replace(/(\.[A-Za-z]{2,})\w*$/i, '$1') ); // 去重并返回 return [...new Set(cleanedEmails)]; } console.log(checkEmails())
HTML 代码
<textarea id="txtContent">aa@aaa.comwww</textarea>
效果说明
- 输入
aa@aaa.comwww时,会被清理为aa@aaa.com - 输入多个重复或带多余后缀的邮箱(比如
xy@gmail.comwww, xy@gmail.com),会自动去重并清理为xy@gmail.com
内容的提问来源于stack exchange,提问作者dtommy1979
相关产品推荐
相关产品推荐

