2011-08-17 13 views
5

this questionと似ていますが、この場合実装方法は不明です。テキストから電子メールアドレスを解析/トリミングする方法

信頼できるユーザー(入力の検証に関わる必要はありません)は、電子メールアドレスをテキストフィールドに入力/貼り付けることです。ブラーイベントでは、テキストを見て、入力したものをクリーンアップします(通常、電子メールクライアントからアドレスリストをコピーして貼り付けた後に)。この正規表現は、二重引用符など<>文字で何かを削除する必要があり

[email protected], [email protected], [email protected]

答えて

-2
myEmailList=userInput.match(/[a-zA-z0-9_.][email protected][a-zA-Z0-9_.]+\.(com|org|whatever)/g); 
myEmailListString=myEmailList.join(', '); 

それとも、あなたは電子メールアドレスの配列を希望している場合、最初の行を行います。

+4

電子メールアドレスを解析するための独自の正規表現を作成しないでください。真剣に? (com | org | whatever)? –

+2

ええ、「何でも」は、どんなTLDを挿入したかったのかのためのプレースホルダーでした。新しい判決と数十万ドルの「何でも」がTLDになる可能性はあるが、 :) –

+2

正確には、「何でも」理解できなかったわけではなく、ちょうど**私はこのアプローチに激しく同意していません。** –

4

"Bob Smith" <[email protected]>, [email protected], "John Doe"<[email protected]>

はにトリミングされます。 JavaScriptで

/".*?"|[<>]/ 

、あなたはこれらの線に沿って何か持っているかもしれません:

line.replace(/".*?"|[<>]/g, ''); 
+0

本当に問題ではありません。上の正規表現は、存在する山括弧を削除します。山括弧で囲まれていない電子メールアドレスには何も起こりません。 –

+0

@マーク、これはjavascriptですか?それはPHPのように見える... – snumpy

+0

申し訳ありませんが、私はこれがJavascriptとPHPではなかったことを逃した。私はJSでそれを表示するように更新しました。 –

4

非常にである可能性があります。そのフィールドに何も入力しないでください。そうしないと、ユーザーが有効な電子メールアドレスに電子メールを送信できないため、プログラムが役に立たない可能性があります。 。

ストーリー全体を読むにはsee this blog postまたはRFCのために自分で行ってください。

+2

私の印象は、これはすべてのユーザーにユーザーが直面するフォームではないということです。むしろ、一人の人間が大量のデータを一括して入力する形式です。だから、あなたが優れた点を作ったと思うのですが、それがここで心配するのかどうかは分かりません。 –

+0

あなたは正しいと思いますが、プログラマーがユーザーにとって煩わしさを感じる不愉快なソフトウェアを書くのは簡単です。不必要な複雑なロジックを備えたスマート・ソフトウェアは、スマートだけどスマートではない場合や、この半分スマートさを迂回して無効にする方法がない場合には、特に問題になることがあります。 – 6502

1

あなたはすぐに配列に電子メールを解析する.math()メソッドを使用することができます。

inputval.match(/[A-z0-9][email protected][A-z0-9]+.[A-z]{2,3}/g) 

あなたは、文字列にそれを変換したい場合は、あなたがそれに.join(', ')または.join('; ')を追加することができます。正規表現は単純化されています。電子メールを解析するためにそこにはかなりの正規表現がありますが、上記のものは単純化されたバージョンです。以下のコメントや複数のTLDで指摘されているように、サブドメインや電子メールアドレスの最初の部分の+シンボルは考慮されていません。あなたのニーズに合った正規表現に置き換えてください。

+0

does not match [email protected] –

+0

@ CodeGuyあなたは正しいですか?私は、正規表現が非常に単純化されていることに注意しました。電子メールの正規表現は1ダースであり、上記のものと簡単に置き換えることができます。私が明確に伝えていない点は、 '.match'がマッチを返すということでした。 OPが求めていた単純な電子メールアドレスを解析するのは簡単な方法です。私は他の人が改善できる場合、私の答えを編集することを奨励していますが、正確な正規表現は私の答えの焦点では​​ありませんでした。それにもかかわらず、私がここにあるものを改善するために、より良い正規表現を追加したいのであれば、自由に行ってください。 –

3
var emailList = userInput 
    .replace(/[^,;]*.?</g, "") 
    .replace(/>/g, "") 
    .replace(/[,; ]{1,}/g, "\n") 
    .replace(/[\n]{2,}/g, "\n") 
    .split("\n") 

これは、電子メールのリストは、(Googleがボックスにあなたから コピー&ペーストの電子メールリストを含む)は、次の形式で提供することができます:

"Bob Rob"<[email protected]>, [email protected]; [email protected] [email protected] 

電子メールIDが,によって分離することができ、 ;、または改行。

関連する問題