2009-07-10 13 views
1

私はasp.netの電子メールのテストボックスで、次の正規表現があります正規表現の問題

([a-zA-Z0-9_\-\.]+)\@((base\.co\.uk)|(base\.com)|(group\.com)|(arg\.co\.uk)|(arggroup\.com)) 

この正規表現は、唯一のそれはのために働いていない

[email protected] 
[email protected] 
[email protected] 

のために働く:

[email protected] 
[email protected] 

助けてください

+0

エスケープする必要があります:私たちはコンパイルして実行することができ、最小限の失敗例を投稿してください。 – RichieHindle

答えて

6

私は正確な問題には至りませんでしたが、ここで重要な点を見落としたり見過ごしたりしました。 :-)

'.'は、正規表現のワイルドカードです。何でも一致します。

と一致する '。'

[a-zA-Z0-9_-.] 

が偽の範囲を含んで、ドットにアンダースコア:使用

\. 

が、これは

([a-zA-Z0-9_\-.]+)@(base\.co\.uk)|(base\.com)|(group\.com)|(arg\.co\.uk)|(arggroup\.com) 
+0

上記の正しい表現を再投稿することができます。私は今混乱しています –

+0

@Jaisonは私のポストを編集しました。 –

+4

@Rats:文字範囲([])でドット(。)をエスケープする必要はありません。文字の範囲内の点は、点にのみ一致します。 –

10

これは試すことができます。次のように「アンダースコア、ダッシュ、ドット」を意味しましたか?

[a-zA-Z0-9_\-.] 

?一度修正すれば、それは私のために働く。

住所には.ではなく\.を使用する必要があります。ドットは任意の文字と一致しますので、baseXcomとパターンを一致させることができます。 (あなたが[]秒以内ドットのバックスラッシュを必要としないことに注意してください。)

フル修正の式:

@"([a-zA-Z0-9_\-.]+)@((base\.co\.uk)|(base\.com)|(group\.com)|(arg\.co\.uk)|(arggroup\.com))" 

(私は私のバックスラッシュをバックスラッシュすることを避けるために@""を使用していますことに注意してください。)

+0

http://www.regexplanet.com/simple/index.jspによるとまだ動作していません –

+1

これはすべての例に一致します。多分あなたのせいはどこか他の場所ですか? –

0

正規表現テスターhereを使用すると、おそらく役に立ちます。しかし、私の知る限り、と例のいずれか作業からそれを防ぐ必要がある正規表現に誤りがあります:グループは次のようになります。その修正により

[-a-zA-Z0-9_.] 

、それがすべてで動作しますあなたの例の_.の間に-を置くと、範囲を作成しようとしますが、ASCII値の順序が間違っています。

また、端部に使用されるドットが@Jaison base\.comとしてではなく、base.com