2013-07-09 35 views
3

我創建了一個正則表達式匹配數字1-100,包括小數比如50.25C#正則表達式人數達到100

出於某種原因,十進制數不匹配,我不知道爲什麼。

有人可以幫忙嗎?

string pattern = @"^([1-9][0-9]{0,1}(\\.[\\d]{1,2})?|100)$"; 
Regex r = new Regex(pattern); 
Match m = r.Match(s.SearchRadius); 
if (!m.Success) 
{ 
    s.SearchRadius = "20"; 
} 
+0

它的工作對我來說,http://rubular.com/r/CCYpnCHBoc –

+3

我想你想\。和\ d,而不是\\。和\\ d – Jonesopolis

回答

9

您使用您的字符串@星座,所以你不應該逃避\字符。

所有你需要的是

string pattern = @"^([1-9][0-9]{0,1}(\.[\d]{1,2})?|100)$"; 
+0

哦,沒錯。謝謝 – Slinky

4

當使用@""字符串文字,你不要逃避反斜槓。你可能打算\.\d

@"^([1-9][0-9]{0,1}(\.[\d]{1,2})?|100)$"; 
+0

感謝您指出 – Slinky

0

代碼捕獲這兩個數XX.XX和.XX。如果您希望只在第二個圓括號中插入?:才能捕獲該數字。

^([1-9][0-9]{0,1}(?:\.[\d]{1,2})?|100)$ 

順便說一下,以測試正則表達式的好辦法是像http://rubular.com/ 一個網站,ü可以看到結果的時候了。

2

只是爲了玩魔鬼代言人 - 非正則表達式的解決方案是:

double d; 
if (!(double.TryParse(s.SearchRadius, out d) && d <= 100 && d >= 0)) 
{ 
    s.SearchRadius = "20"; 
} 

而對於好的措施,名言由Jamie Zawinski撰寫:

一些人,當遇到一個問題,認爲「我知道,我將使用 正則表達式。」現在他們有兩個問題。