2017-08-17 8 views
2

2つの電子メールアドレス[email protected][email protected]を拒否し、特定のドメインの他のすべての電子メールアドレスと一致するように、電子メールに一致する正規表現を作成しようとしています。これまでのところ、私は次のパターンを作っていますRegexが特定の電子メールを拒否する

^([email protected]|[email protected])|(A-Z0-9)[A-Z0-9._%+-][email protected]$ 

これまでのところ、私がブロックしたいメインのメールアドレスを拒否することができますが、それは、このを通じて他のすべての文字列を受け付けます。別の方法として、私は次の正規表現を書いた:

^(?!test|tes2)[A-Z0-9._%+-][email protected]$ 

しかし、これは、排他的にテストまたはTES2のいずれかで始まるすべてのパターンを拒否します。

このシナリオを達成するためのより良い正規表現は何ですか?

+0

'しかし、これは他のすべての文字列を受け入れます。他の場合はあなたの最初の正規表現が失敗/不十分です。 –

+0

私が言ったのは、それが正規表現の目的を全滅させる、拒否された文字列以外のすべての文字列を拾うということでした。 –

答えて

1

「修正」あなたの正規表現は、あなたはまた、完全なユーザー名としてtesttes2に一致するように先読みパターン内部@のテストを確認する必要があります。

^([email protected]|[email protected])[A-Za-z0-9._%+-][email protected]\.com$ 
     ^ ^

は、あまりにも、ドットをエスケープすることを忘れないでください。 regex demoを参照してください。

ただし、ユーザー名の部分にはあまり制限したいかもしれない、とだけではなく、あなたの文字クラスの\S+を使用します。

^([email protected]|[email protected])\[email protected]\.com$ 
       ^^^ 

another regex demoを参照してください。 \S+パターンは、空白文字以外の1つ以上の文字に一致します。

関連する問題