2011-11-08 8 views
0

私は以下の正規表現を持っていますが、私の要件を満たしていません。あなたが入力が私書箱には、最初に任意のテキストをフィルタリングし、それからの数を使用してみてください知っている場合.NetのRegexを使用したPO Boxアドレスの検証

"(?i)\b(?:p(?:ost)?\.?\s*[o0](?:ffice)?\.?\s*b(?:[o0]x)?|b[o0]x)" 
123 post office 
123 post office box 
post office 
po box 
po 12 box 
35 po box 
PO.Box 
p.o.box 

上記の例は、私の現在の正規表現

+0

可能な複製http://stackoverflow.com/questions/5680050/po-box-regular-expression-validation – Ekk

答えて

1

で失敗しています。または、文字列を小文字にして、p、o、s、t、f、i、c、e、b、xの文字を取り除いてから、残っている文字があれば、それは良いことではありません。

0

「ポストオフィス」をフィルタリングすることがどれほど正確であるかわかりませんが、それに続く「ボックス」はありません。 以下の正規表現は、リスト内の "123 post office"と "post office"以外のすべての条件を満たしています。

@"\bp*[o0]*(st)*(al)*\.*\s*[o0]*(ffice)*\.*\s*b+[o0]?x+\b" 

そして、あなたは"(b+[o0]?x+)*""b+[o0]?x+"を変更した場合、それはあまりにもそれらをフィルタリングします。

これが役に立ちます。

1

POボックスの場合、すべてのケースをカバーすることはできません。明らかにあなたが聞きたくないものですが、それは休憩です。私がこのことを見ていると信じているので、ソリューションのためにグーグル・リングを開始すると非常に明白です。多くのソリューションがあります。私が見たすべてのソリューションは、私はあまり気にしません。

したがって、POボックスのアドレスの構成/基準に戻る必要があります。 1つはWikipediaでそれを見つけることができます。 PO Box、P.Oの形式です。住所がPOボックスであるかどうかを判断するための正規表現を書くときのルールに基づいた標準的な書式の例を挙げるに過ぎない。

これが私の解決策です。それはシンプルなので、ユーザーがポップボックスに入れる方法が多すぎるからです。そして、あなたはpか郵便か何かを仮定する必要があります。pはポストボックスのアドレスを開始します。そのようにして、123ポートのアドレス形式でpまたはoという単語のいくつかの亜種を含むアドレスをフィルタリングしません。私はこれが理にかなってほしい。

/^p+(ostal|ost|\.|)*o*(ffice|\.|)*(box)*/i 

上記http://www.rubular.com上でテストすることができ、あなたが最初に削除する必要があり、前方に閉じますスラッシュ、スラッシュクローズの右側にあるブロック内のテキストフィールドをI(ケース非感受性を置きます。

関連する問題