2011-08-10 13 views
1

住所のテキストボックスコントロールを有効にする正規表現バリデータコントロールがあります。RegEx。ボックスとRRの住所住所のテキストボックス

これまでのところ、私は正規表現のすべての一般的な形式のコントロールからエラーメッセージを正常に生成しています。ボックス。

^(?i)(?!.*P\.? ?O\.? ?Box)[-a-z\d .,/]*$ 

また、私は 'RR' と '農村ルート' を禁止したいと思います。ここで何が価値があるために

は、再書き込み、この正規表現しようとしたときに、私が使用している参照のカップルです:

私書箱ボックス正規表現:Testing for a PO Box in all of its forms

農村ルート正規表現: C#: Determing if string is like this pattern; possible regex

+0

私はそれがあなたが思うほど完全ではないと思います。私は通常、 "box 123"を入れます。私は "po"部分を書きません。 – CaffGeek

+0

「ポスト・バッグ123」と「バッグ123」の使用法、および「PO Box 123」または「Box 123」の代わりにいくつかの変形があります。 – Spudley

+0

ああ、住所がBox Hillにあればどうなりますか? – Spudley

答えて

0

多分私は疑問を誤解しましたが、私は正規表現の点を見ません。このようなことをして、代わりに文字列の任意の部分で複数の単語を除外することができます。

IEnumerable<string> disallow = new String[] { "RR", "Rural Route", "Box"}; 
bool invalidAddress = false; 

string address = "1728 Box 12".ToLower(); 

foreach (var item in disallow) 
{ 
    if (address.Contains(item.ToLower())) 
     invalidAddress = true; 
} 
+0

このコードサンプルを提供いただき、ありがとうございます。当時、私は本当にRegExを使用しようとしていましたが、私はそうすることができなかったと思います。 –

0

は、まさにそのような「PO」、「PO」、「RR」など、いくつかのオプションを含む文字列をチェックするカスタムバリデータを書き込み、それは価値があります、 "田舎道"。

正規表現は非常に強力なツールですが、維持管理は容易ではありません。理解しやすいコードを書くことができれば、たとえそれが長くかかっても、それはほぼ常に長期的な勝利です。

最後に、あなたが探しているものが完全に正規表現で可能であるかどうかはわかりません。一部のテキストに対しては有効なキャプチャがないように選択できますが、残りのテキストには有効なキャプチャがあるため、バリデータは引き続き通過する可能性があります。