0

私はまだ正規表現を回避する方法を考えており、解決しようとしている問題に遭遇しました。複数の特定の電子メールアドレスを検証するにはどうすればよいですか?

たとえば、testdomain.com、realdomain.com、gooddomain.comのみの検証を許可したいと思います。他のすべての電子メールアドレスは許可されていません。

annie@testdomain.com   OK
aaron1@realdomain.com  OK
amber@gooddomain.com   OK

annie@otherdomain.com NOT OK

しかし、正規表現に複数の特定の電子メールアドレスを追加する方法がわかりません。

ありとあらゆる助けをいただければ幸いです。

ありがとうございました、

4

6 に答える 6

3

1つの正規表現にさまざまな正規表現を含めることを意味しますか?

\b[A-Z0-9._%-]+@(testdomain|gooddomain|realdomain)\.com\b
于 2012-10-19T19:17:43.217 に答える
2

使用している言語を指定していませんが、ほとんどの正規表現の実装には論理演算子の概念があるため、パターンのドメイン部分は次のようになります。

(domain1|domain2|domain3)
于 2012-10-19T19:19:20.347 に答える
1
\b[A-Z0-9._%-]+@(testdomain|realdomain|gooddomain)\.com\b
于 2012-10-19T19:18:35.390 に答える
0

上記がtestdomainで機能すると仮定します。

\b[A-Z0-9._%-]+@(?:testdomain|realdomain|gooddomain)\.com\b

iまた、これをテストケースで機能させるには、大文字と小文字を区別しない修飾子を追加するか、[A-Za-z0-9._%-]代わりに使用する必要があることに注意してください。[A-Z0-9._%-]

こちらをご覧ください

于 2012-10-19T19:18:16.937 に答える
0

これを多くのドメインに拡張できるようにするには、おそらくドメイン名をキャプチャしてから、キャプチャしたドメイン名をコード内のホワイトリストと比較します。

。+@(。+)

まず、「。+」は、文字列の最後の「@」記号までの任意の数(0より大きい)の任意の文字と一致します。次に、「@」は「@」記号と一致します。3番目に、「(。+)」は、「@」記号の後の任意の文字列と一致してキャプチャします(括弧のためにキャプチャします)。

次に、使用している言語に応じて、キャプチャされた文字列を取得できます。次に、キャプチャされた文字列がドメインホワイトリストに含まれているかどうかを確認できます。この最後のステップでは、大文字と小文字を区別しない比較を行う必要があることに注意してください。

于 2012-10-19T19:47:02.673 に答える
0

公式の標準はRFC2822として知られています。

許可するすべてのドメイン名にOR演算子を使用|します。.ドメインでエスケープすることを忘れないでください。

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:testdomain\.com|realdomain\.com|gooddomain\.com)

また、大文字と小文字を区別しない修飾子/フラグを使用して、アドレスに大文字を使用できるようにします。

于 2012-10-19T20:04:00.217 に答える