我有一个表单字段,其中包含一个或多个“完整”电子邮件地址。 “完整”是指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;进入第二个领域和&之前的一切进入第三个字段并对整个“完整”电子邮件地址列表进行迭代/递归操作,以生成两个以纯粹的电子邮件地址和纯名字分隔的分号列表?
答案 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方法,希望这是您正在寻找的。 p>
答案 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]);
}