2016-05-11 7 views
0

で区切られた単一または複数の電子メールアドレスを一致させるには私は欲しい:正規表現は、私は次の正規表現パターンが正確に何をしていない文字列の次のような</p> <p><code>#keyword1 [email protected]</code>または<code>#keyword2 [email protected];[email protected];[email protected]</code></p> <p>にマッチする正規表現パターンを持っている必要があり、コンマ

/(#)(?:keyword1|keyword2)\s([a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)/g 

上記の正規表現は#keyword1 [email protected]と正しく一致します。 しかし、それは最初のセミコロンの前にすべて一致します。私はそれを全部一致させる必要がある。どうすればいいですか?

+0

@heemayl正規表現のパターンは、.com、.co.uk、.netなどのパターンと一致するようにテストされています。 –

+0

括弧でくくってくださいall:https://regex101.com/r/kC6vJ2/1 –

+0

@AlexK。応答していただきありがとうございます。しかし、それは私が探しているものではありません。あなたが私の必要条件を理解できるように、私はそのポストの質問を再作成しました。 –

答えて

1

私は2つのステップで文字列を解析することをお勧めします。キーワードを電子メールアドレスの配列から区別してから、配列を分割します。

まず、キーワードとarrrayの両方を検索します。文字列がすべてであると仮定します。 JavaScript RegExpの表記法を使用していますが、何が起こっているのかを理解できるはずです。

文字列が「#keyword2 [email protected]; [email protected]; [email protected]」であるとします。

/^#(keyword1|keyword2) (.*)$/g 

グループ1は "KEYWORD2" になり、グループ2になります "[email protected]; [email protected]; [email protected]"。次のパターンをグループ2に適用し、マッチをループして各電子メールアドレスを取得します。

/([^;]*)(?:;|$)/g 

このパターンは、それらがセミコロンで区切られただけのことを、電子メールアドレスが正しくフォーマットされているかどうかについての仮定を行いません。これは、電子メールアドレスが1つだけの場合にも機能します。

+1

私が探していたものではありませんが、私には必要なソリューションへの巨大なリードがありました。どうもありがとう!!! –

関連する問題