JavaScript:提取部分电子邮件地址并拆分成部分

时间:2014-10-17 16:20:03

标签: javascript regex

如果存在一个点,如何在许多公司中普遍存在,如何提取部分电子邮件地址并拆分成部分以及名字和姓氏?

输入1

perry.rhodan@galaxy.net

输入2

atlan@galaxy.net

通缉输出1

Perry 
Rhodan
galaxy
net

通缉输出2

atlan
galaxy
net

我在下面使用正则表达式和if子句来检查电子邮件中的点。但也许有一个正则表达式可以实现相同的结果?

3 个答案:

答案 0 :(得分:2)

使用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);
}

答案 1 :(得分:1)

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/

答案 2 :(得分:1)

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

但是,由于电子邮件地址是一个奇怪的解析in general,我建议你寻找一个完整的解析器库,比如这个one,如果你在nodejs上。