JavaScript:提取电子邮件地址的部分并将其拆分为多个部分

JavaScript: Extract parts of e-mail address and split into parts

本文关键字:拆分 个部 电子邮件地址 提取 JavaScript      更新时间:2023-09-26

如果像许多公司中常见的那样存在点,如何提取电子邮件地址的部分,并将其拆分为多个部分、名字和姓氏?

输入1

perry.rhodan@galaxy.net

输入2

atlan@galaxy.net

需求输出1

Perry 
Rhodan
galaxy
net

需求输出2

atlan
galaxy
net

我在下面用正则表达式和if子句给出了我的答案,if子句用于检查电子邮件中的点。但也许有一个正则表达式可以实现同样的结果?

使用C#执行此操作:

Regex regex = new Regex(@"(.+)@(.+)(?='.'w{2,})");
string texts = "perry.rhodan@galaxy.net'natlan@galaxy.net";
var list = new List<string>();
foreach (Match item in regex.Matches(texts))
{
    list.AddRange(item.Groups[1].Value.Split('.').Where(v => !list.Any(l => l == v)));
    list.AddRange(item.Groups[2].Value.Split('.').Where(v => !list.Any(l => l == v)));
}
foreach (var item in list)
{
    Console.WriteLine(item);
}
function GetEmailParts( strEmail ){
    var objParts = {
        user: null,
        firstName: null,
        LastName: null,
        domain: null,
        tld: null
        };
    strEmail.replace( 
        new RegExp("^([a-z''d._%-]+)@((?:[a-z''d-]+''.)+)([a-z]{2,6})$", "i"),
        function( $0, $1, $2, $3 ) {
            objParts.user = $1;  
            if ($1.length > 1) {
                $1 = $1.split(".");
                for(var i = 0; i < $1.length; i++){
                    $1[i] = $1[i].substring(0,1).toUpperCase() + $1[i].substring(1,$1[i].length);
                }
                objParts.firstName = $1[0];
                objParts.lastName = $1[1];
            };
            objParts.domain = $2;
            objParts.tld = $3;
        }
    );
    return( objParts );
}
console.log(GetEmailParts("perry.rhodan@gmail.com"));
# Gives back an Object with either First and Last name sub object
# or one single user sub object if no dot is present in the email 

在行动中看到它:http://jsfiddle.net/nottinhill/0bh0vkd7/

我不知道你是否真的想自己写Regexp(在这种情况下,上面的答案可能会很好)。

然而,由于电子邮件地址通常是一组奇怪的解析库,如果您使用nodejs,我建议您寻找一个完整的解析器库,比如这个库。