2009-06-24 153 views
1

我需要一個正則表達式,它不會讓別人繼續檢查單詞「框」或「框」或「框」中的數字後跟數字。這兩個條件必須滿足這個工作,字框和數字沒有一個或另一個。有誰知道如何寫這個?正則表達式幫助

編輯:

嗨,我已經嘗試了一些,問題是,它防止常規地址:1234 S.東西巷。我想要防止的是如果用戶輸入類似p.o.方框1234.我們用「方塊」這個詞來表示任何事物,並且在它不應該被接受後用數字來表示。

感謝

回答

6

編輯的問題澄清後:

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

這將在比賽中的「盒子」作爲本身就是一個字,可以跟空格,後面跟一個數字,在任何地方輸入字符串。所以它會匹配:

  • box12
  • 箱12
  • 郵政信箱專欄12
  • BOX 12A

它不會匹配:

  • 黃楊樹12
  • 的boombox 12
  • 箱POG
  • 箱POG 12

(如果你原來的問題會很有幫助ñ曾解釋什麼,你實際上是試圖做)

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

編輯澄清問題後:

我猜你真的想在不區分大小寫的搜索:

box\s*\d+ 
  • \s*:任意數量的空白
  • \d +:至少一個數字

您可以定義的位數,如果你想。 3-5位數例如:

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

至少在我的經驗更容易編寫一個正則表達式的預期的情況下嚴格匹配,而不是試圖排除例外情況。

0

如果您顯示了您想要接受的格式示例,那麼人們可以更輕鬆地回答該問題。

如果你想添加前綴的「框」,然後用數字的任意變體字符串,這樣的事情應該工作(請確保您使用RegexOptions.IgnoreCase)

^box\d+$ 

這將匹配...

box1 
BOX1234567 
bOx3 
...etc... 
0

你嘗試過類似

/box\d+/ 

加IgnoreC ASE?

0

這樣的:

box|Box|BOX\d+ 

將匹配這些具體案例中,箱,箱,所有這些後面數字,但它也將在這種情況下,例如返回true:

asBox123asdasd 

如果您要獲得真正的,如果字符串完全box123,例如,你應該使用:

^box|Box|BOX\d+$ 

instea d

+0

\ d *意味着\ d可匹配0次或更多次和OP要求至少有一個數字..使用\ d +來代替。 – DeadHead 2009-06-24 16:18:50

0

不要忘記「郵局」選項。

^(P(OST |)* O(辦公室支持|。))?框* [0-9] + $