jQuery:从表单上的“完整”电子邮件地址中提取个人姓名和电子邮件地址

时间:2012-04-24 19:37:34

标签: jquery regex email extract

我有一个表单字段,其中包含一个或多个“完整”电子邮件地址。 “完整”是指Personal Name <person@domain.com>

格式

多个“完整”电子邮件地址用分号分隔。列表末尾可能有也可能没有最终的分号。我想将名称提取到一个字段中,将电子邮件地址提取到另一个字段中。

所以:

full_email = "Person name <parson@domain.com> ; Another person <another@domain.com> ; " 
email_only is set to  "parson@domain.com ; another@domain.com ;" 
name_only is set to  "Person name ; Another person ;"

是否有一些reg exp / jQuery天才来复制&lt;之间的所有东西和&gt;进入第二个领域和&之前的一切进入第三个字段并对整个“完整”电子邮件地址列表进行迭代/递归操作,以生成两个以纯粹的电子邮件地址和纯名字分隔的分号列表?

4 个答案:

答案 0 :(得分:2)

我认为你可以在没有正则表达式或jQuery的情况下通过简单地分割;来获取条目,然后在<上获取条目的部分来实现。这是一个jsFiddle来演示。

var full_email = "Person name <parson@domain.com> ; Another person <another@domain.com> ; " ;

var email_only = [];
var name_only = [];

var entries = full_email.split(';');

for(var i = 0; i < entries.length; i++)
{
    var entry = entries[i];
    if (entry.contains('<')){
        var parts = entry.split('<');

        name_only.push(parts[0].trim());
        email_only.push(parts[1].substr(0, parts[1].indexOf('>')));
    }
}

// The arrays
console.log(email_only);
console.log(name_only);

// Joined back to ; separated strings
console.log(email_only.join('; '));
console.log(name_only.join('; '));

答案 1 :(得分:1)

您可以在javascript中使用split方法首先拆分每个地址......

var emails = "";
var names = "";
$.each(full_email.split(';'), function(index,val){
    var contact_array = val.split('<');
    var name = contact_array[0];
    var email = contact_array[1];
    email = email.substring(0,email.indexOf('>'));
    emails += email + "; ";
    names += name + "; ";
});

所以你可以通过名字和电子邮件找到你想要的任何东西。您还可以在名称上使用trim方法,希望这是您正在寻找的。

答案 2 :(得分:1)

以下是从输入中构建两个数组的所有JavaScript方法:

var full_email = "Person name <parson@domain.com> ; Another person <another@domain.com> ; " 
var email_only = new Array();
var name_only = new Array();

step1= full_email.split(';');
for(var i=0;i<step1.length-1;i++){
    step2 = step1[i].trim();
    step3 = step2.split('<');
    email_only.push(step3[1].slice(0,-1).trim());
    name_only.push(step3[0].trim());
}

console.log(email_only,name_only);

<强> ​jsFiddle example

答案 3 :(得分:0)

如果从full_name字符串中删除不必要的空格,则此脚本将处理它。 小提琴:http://jsfiddle.net/GvGoldmedal/CacU8/

var full_email = "Person name <parson@domain.com>;Another person <another@domain.com>;";
var array = full_email.split(";");

var substr = "";
var subsplit = "";
var names = new Array();
var emails = new Array();


for( var x=0; x < array.length - 1; x++)
{
    substr = array[x];
    subsplit = substr.split(" ");
    //Email and Name Exists
    if (subsplit.length > 2)  
    {
        names.push(subsplit[0] + " " + subsplit[1]);
        subsplit[2] = subsplit[2].replace("<", "");
        subsplit[2] = subsplit[2].replace(">", "");
        emails.push(subsplit[2]);
    }
    else if (subsplit.length = 2) // Only Name
    {
        names.push(subsplit[0] + " " + subsplit[1]);
    }
    else // only email
    {
        subsplit = subsplit.replace("<", "");
        subsplit = subsplit.replace(">", "");
        emails.push(subsplit);
    }
}

for (var x=0; x < names.length; x++)
{
    alert("Name:" + x + " " +names[x]);

}

for (var x=0; x < emails.length; x++)
{
    alert("Email:" + x + " " +emails[x]);

}
相关问题