2

1つまたは複数の「完全な」メールアドレスを含むフォームフィールドがあります。「完全」とは、次の形式を意味しますPersonal Name <person@domain.com>

複数の「完全な」電子メールアドレスはセミコロンで区切られます。リストの最後に最後のセミコロンがある場合とない場合があります。名前を1つのフィールドに抽出し、電子メールアドレスを別のフィールドに抽出したいと思います。

それで :

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 ;"

<と>の間のすべてを2番目のフィールドにコピーし、<の前のすべてを3番目のフィールドにコピーし、「完全な」電子メールアドレスのリスト全体に対して繰り返し/再帰的に実行して2つを生成するための天才のreg exp / jQueryビットはありますか?純粋な電子メールアドレスと純粋な名前のセミコロンで区切られたリスト?

4

4 に答える 4

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('; '));
于 2012-04-24T20:02:19.573 に答える
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メソッドを使用することもできます。これが、探しているものであることを願っています。

于 2012-04-24T20:01:57.967 に答える
1

入力から2つの配列を作成するすべての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の例

于 2012-04-24T20:31:36.503 に答える
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]);

}
于 2012-04-24T20:22:08.007 に答える