-1

これが私の現在の正規表現です:

^([-a-zA-Z0-9'_+\/]+([-.'_+\/][-a-zA-Z0-9'_+\/]+)*)@(([a-zA-Z0-9]+((\.|[-]{1,2})[a-zA-Z0-9]+)*)\.[a-zA-Z]{2,6})$ 

電子メールアドレスを検証するため(そして、はい、私は最も単純な用語を除いて電子メールアドレスを検証しようとすべきではないことを知っていますが、私たちの電子メールベンダーは特殊文字などを拒否します)。

この正規表現は、1つを除くすべての要件を満たしています-

「ピリオドの直後にハイフンやアンダースコアはありません」

ここにたどり着くことができましたが、正規表現は私の専門ではありません。どんな助けでもいただければ幸いです。

ありがとう。

4

1 に答える 1

3

正規表現(グループ化のほかに、で(...)始まります^[-a-zA-Z0-9'_+\/]+。これは、最初^に1つ以上の+許可された文字が続くことを意味し[...]ます。この場合、それらはハイフン、小文字/大文字、数字、アポストロフィ、アンダースコア、プラスまたはフォアスラッシュです。

2番目の部分は、変更する必要があるものです。正規表現では([-.'_+\/][-a-zA-Z0-9'_+\/]+)*、これは複数回発生する可能性のあるパターンですが、である必要はありません*。パターンには2つの部分があります。許可される文字の1つ:ハイフン、ピリオド/ドット、アポストロフィ、アンダースコア、プラスまたはフォアスラッシュ。その後に、1つ以上のハイフン、小文字/大文字、数字、アポストロフィ、アンダースコア、プラスまたはフォアスラッシュが続きます。

パターンの最初の部分からピリオド/ドットを削除すると、この文字は許可されなくなります。ただし、ピリオド/ドットを許可したいが、同じ文字セットでは許可したくないため、代替パターンを定義する必要があります。

この2番目の部分が([-.'_+\/][-a-zA-Z0-9'_+\/]+)*、ピリオド/ドットの代替パターンを持つパターンに変更される場合([-'_+\/][-a-zA-Z0-9'_+\/]+|\.[a-zA-Z0-9'+\/]+)*、最終的な正規表現は必要な処理を実行します。ご覧のとおり、|\.[a-zA-Z0-9'+\/]+が追加されました。これは、次のようになります。または、|単一のピリオド/ドットの後に1つ以上の小文字/大文字、数字、アポストロフィ、プラスまたはフォアスラッシュが続くパターン。

最終的な正規表現は次のとおりです。

^([-a-zA-Z0-9'_+\/]+([-'_+\/][-a-zA-Z0-9'_+\/]+|\.[a-zA-Z0-9'+\/]+)*)@(([a-zA-Z0-9]+((\.|[-]{1,2})[a-zA-Z0-9]+)*)\.[a-zA-Z]{2,6})$ 
于 2012-07-19T01:53:06.697 に答える