2017-10-17 5 views
0

私はRegexを使ってスペース、コンマ、セミコロン、スペースなしで電子メールを分割しようとしています。私は、この文字列を持っている:Regexを使って空白、コンマ、セミコロン、スペースなしで電子メールを分割する方法は?

var emails = "[email protected] [email protected];[email protected], [email protected]" 

を、私は、この正規表現を使用してアレイにputllそれらのすべての電子メールを取得しようとしている:

function extractEmails() { 
return emails.match(/\[email protected]\w+.com/); 
} 

をそれが動作していないようです。どのようにRegexを使用してすべての電子メールを取得する上の任意のアイデア?前もって感謝します!

+0

lisを維持しない限り、 'user1 @ email.comuser2gmail.com'のようなものを分割する方法はありません私が最後にチェックしたTLDのうち、どれが「かなり長い」(https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains) – j08691

+0

*「スペース無し」* - できません。アドレスのトップレベルドメインが他のトップレベルドメインと同じ文字で始まった場合はどうなりますか?たとえば、「バーゲンシューター」を「バー」と「ゲインズハンター」、または「バーゲン」と「ハンター」に分割する必要がありますか? – nnnnnn

答えて

0

あなたはすべての一致を得るために、g修飾子を追加するだけです:

var emails = "[email protected]\[email protected];[email protected], [email protected]"; 
 

 
function extractEmails() { 
 
return emails.match(/\[email protected]\w+.com/g); 
 
} 
 

 
console.log(
 
    extractEmails(emails) 
 
);
(@は .comが含まれている前に、これは一部のみのいずれも限り動作しますもちろん、また barcom.comドメインがあると失敗するかもしれません...)

+0

こんにちはCBroe、ありがとうございました。 NO SPACEで区切られた2つの電子メールがある場合、エラーを投げる方法はありますか? – progx

+0

'.com'で終わるアドレスとのマッチングが必要な場合は、上記のような場合を除いて、そのまま動作するはずです。' foo @ bar.comlorem @ ipsum'をこれらのパターンをテストする2番目の正規表現を使用して個々にテストすることをお勧めします。両方を1つに詰め込むと、かなり複雑になるかもしれません。 – CBroe

+0

ありがとうCBroe! – progx

関連する問題