2016-07-21 13 views
3

クライアントに複数の電子メールを送信する要件があります。Javaに複数のEmailIdを含める正規表現

しかし、複数のメールIDにメールを送信しているときに問題が発生しました。例えば

、私は

[email protected];[email protected] 

を書く場合、それは私にエラーを知らせる電子メールIDをスローしていましたが正しくありません。

電子メールIDをセミコロンで区切りたいのですが、正規表現がセミコロンをサポートしていないようです。

適切な形式は次のようになります。

[email protected];[email protected] 

s;[email protected] 

を許してはならない正規表現は、案内してください

myregex = "^['_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$" 

を使用。

+2

なぜ単純ではないstring.split( ";") ' – Jens

+0

電子メールをどのように送信しますか?おそらく電子メールを ':'に分割し、複数の受信者を設定するべきです。 –

+0

実際には@ PatternNumber – sTg

答えて

2

あなたは1つの電子メールのための正規表現を持っています。

は今、あなたは文字列がemail +(; + email{何度でも}が含まれているかどうかを確認します。あなたはアンカーなしでのブロックとして、あなたの前のパターンを使用して、このような最終パターンを構築する必要があります

String myregex = "['_A-Za-z0-9-+]+(?:\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(?:\\.[A-Za-z0-9]+)*\\.[A-Za-z]{2,}"; 
String final_pattern = "\\A" + regex + "(?:;" + regex + ")*" + "\\z"; 

\Aは、文字列の明確なスタートであることをregex demo

注を参照してください\z - 非常に文字列アンカーの末尾。

はまた、文字クラス内の+は単なるリテラル+シンボルとして扱われます/(1回以上)数量詞のその特別な意味を失い、となりますのでご了承願います。私も不要なグループを削除し、すべてのキャプチャグループを非キャプチャにして、よりクリーンなマッチングにしました(キャプチャされた値が必要ない場合、各グループのスタックに保存するのはなぜですか?)。

+1

ありがとうウィクショー魅力的な作品:) – sTg

0

私はあなたがstring.split( "_")を使用すると思います。きっと大丈夫だよ。私は私のために使用しましたbodyremoveregex =(ÎÎÎÎΣOn Line)([、] * [0-9] :[0-9]、[0-9] /[0-9])* __ * /)それは正しく機能しました。あなたは式の間に_を加えなければなりません。何らかの理由で、私の答えに_記号が表示されないので、どこでも私が意味する_を想像してください。

+0

'code'をバッククォート(' \ '' code' \ '')で囲む必要があります。すると、 "生の"テキストが表示されます。 –