2009-06-24 8 views
1

単語「ボックス」または「ボックス」または「ボックス」の後に数字が続くタイプがチェックアウトされないようにする正規表現が必要です。これが動作するには、両方の条件、つまり単語ボックスと数字が一致しなければなりません。誰もこれを書く方法を知っていますか?RegEx式のヘルプ

EDIT:

やあみんな、私はいくつかを試してみたし、問題は、それが1234 S.何かレーンのような正規のアドレスを防ぐことだということです。私が避けたいのは、ユーザーがp.oのようなものを入力するだけです。私たちは、「箱」という言葉と数を受け入れてはならないものの何かを考え出しています。質問が明らかになった後に編集

おかげ

答えて

6

new Regex(@"\bbox\s*\d+", RegexOptions.IgnoreCase); 

どこかで、数字が続く、必要に応じて空白が続く自身で単語、として「ボックス」と一致します入力文字列。だから、一致します。

  • box12
  • ボックスを12
  • 私書箱ボックス12
  • BOX 12aを

それは一致しません:

  • boxtree 12
  • ラジカセ12
  • ボックスPOG
  • ボックスPOG 12

(あなたのオリジナルクエストがnはあなたが実際にやろうとしたものを説明していた)

5
(box|Box|BOX)[0-9]+ 

EDIT質問の明確化後:!

box\s*\d+ 

    私はあなたが実際に大文字と小文字を区別しない検索をしたいと思います

  • \s*:任意の空白数
  • \d +:あなたがしたい場合は、桁数を定義することができる少なくとも1つの番号

。 3-5桁の例:

box\s*\d{3,5} 
0

少なくとも私の経験では、それはむしろ例外的なケースを除外しようとするよりも、厳密に予想される場合にマッチする正規表現を記述する方が簡単です。

0

受け入れるフォーマットの例を示すと、人々がこれに答えるのがより簡単になります。

あなたは(あなたがRegexOptions.IgnoreCaseを使用してください)「ボックス」のいずれかの変種で、文字列の前に付けるために、その後の数字で、このような何かが動作するはず

のために一致します
^box\d+$ 

を希望している場合...

box1 
BOX1234567 
bOx3 
...etc... 
0

あなたは

/box\d+/ 

プラスIgnoreCのようなものを試してみましたああ?

0

この:

box|Box|BOX\d+ 

は、これらの具体的な例ボックス、ボックス、BOXに一致し、これらすべては数字が続くが、それはまた、例えば、この場合にtrueを返します:

asBox123asdasd 

あなたの場合文字列がbox123の場合はtrueを取得したいと考えています。たとえば、次のようにします。

^box|Box|BOX\d+$ 

instea d

+0

は\ D * \ dは0回以上とOPを一致させることができることを意味し少なくとも1つの数値が必要です。代わりに\ d +を使用してください。 – DeadHead

+0

ああ私はそれを知っていた。私は質問を誤解... –

0

「ポストオフィス」オプションを忘れないでください。

^(P(OST |。)* O(ffice |。))?ボックス* [0-9] + $