2009-07-10 14 views
0

正規表現のバリデータテキストボックスを持つASP.NET Webサイトがあります。デバッグ後に正規表現が機能しない

私は正規表現検証プロパティ「バリ式」およびコンパイル(再構築)し、実行後に発現が変化している、検証変更は反映されません。

以前の検証はうまくいきましたが、変更された検証は機能していません。

私を助けてください!

編集:

まずコード:

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

第二のコード:この部分で

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

正規表現や場合によっては、バリデータを初期化するために使用しているコードを投稿する必要があるかもしれません。 –

+0

VSでローカルに実行しているのか、公開されているサイトをチェックしていますか?後者の場合は、変更を公開していない可能性があります。それが前者の場合は、ブラウザを閉じてサイトをもう一度実行してみてください。それ以外にも、コードサンプルは終わりには役立ちません。 – Lazarus

+0

まずコード ([-ZA-Z0-9 _-。] +)\ @((base.co.uk)|(base.com)|(group.com)|(arg.co.uk)| (arzroup.com) 第2コード @ "([a-zA-Z0-9 _ \ - 。] +)@(ベース\ .co \ .uk)|(ベース\ .com)|(グループ\ .com)|(arg \ .co \ .uk)|(arggroup \ .com)) " –

答えて

-1

[a-zA-Z0-9_\-.]あなたはハイフンをエスケープしています。正規表現文字クラスにハイフンを入れるための適切な方法は、第1の位置にある(またはそれは範囲の一部であると考えて):

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

その後、@の前からバックスラッシュを取り除きます。 Perlでは、@はリスト名の一部として扱われますが、C#ではどのエフェクトをエスケープしなければならないのか分かりません。

期間のエスケープも疑わしいです。それらを2倍にする必要があります。 \\。代わりに、私が期間中行うことは、文字クラスを使用することです:つまり、文字クラスの中では、その期間は特別な意味を失います。

はこれを試してください:あなたの「最初のコードを」仮定すると、

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

でそれを修正..now閉じて、ブラウザ..NO JOY –

+0

文字クラスのハイフンをエスケープして、Perlと.NETの両方と完全にうまく動作するようにします。 C#はPerlのような変数補間をしないので、@をエスケープする必要はありません。 [。]は\のようなリテラルドットにマッチします。それ以外の文字は1文字以上入力する必要があります。 C#の逐語的な文字列では、バックスラッシュをエスケープする必要はありません。 –

+0

私はかつてあなたがテストしていた正規表現の種類を指定できるWebサイトを知っていました。私はそれのトラックを失った。私はシステムからシステムへの移行を容易にするので、広くサポートされている構文を使用することを好みます。どのような正規表現テスターあなたが一番好きですか? –

0

はリテラル正規表現で、あなたはバックスラッシュで文字クラスにハイフンをエスケープする必要があります。

あなたの「第二のコード」は、[email protected]うまくとしてメールアドレスと一致しますC#の逐語的文字列形式の正規表現です。この正規表現には何も問題はありません。

あなたはそれはあなたが望むように動作しない場合は、この正規表現を使用しているコードをポストする必要があります。

関連する問題