2012-09-04 32 views
1

我認爲標題是描述性的正則表達式0.0至1

有效:0.1, 0.15, 0.25, .... and 1

如何包括1是這裏的主要挑戰。謝謝。

更新

對不起,我不能寫的代碼。這是一個遺留應用程序,我無法訪問源代碼。應用程序驗證方法已經嵌入,並使用嵌入在應用程序中的RegularExpression驗證程序

+4

Infinite decimal precision? –

+16

爲什麼不嘗試將其解析爲數字?正則表達式不是一切的解決方案。 – driis

+1

是.1有效嗎? 00.1? 1.0? –

回答

6

正則表達式允許您在模式之間進行選擇(即:匹配模式A或模式B)。你用|來做這件事字符(例如:A | B)。

試試這個:

^(0(\.[0-9]+)?|1(\.0+)?)$ 
+0

男人,你認爲'1.1'應該是有效的嗎?閱讀這個問題我不這麼認爲......(旁註:我沒有降低你的評分) –

+0

忘掉它吧,現在我看到你的觀點 –

+0

這個工程。測試0.5,0.55,1,1.1 [這正確不匹配]。謝謝 – codingbiz

2

也許這將幫助:

^(?:(?:0)(?:\.\d+)?)|(?:1)(?:\.0+)?$ 
+0

1.0000呢? – driis

+0

@driis謝謝,模式已更新 –

4

這不是一個正則表達式的解決方案,因爲我不認爲正則表達式是一個很好的解決方案。我會這樣做:

string n = "0.1"; 
decimal number; 
bool isNumber = Decimal.TryParse(n, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out number); 
return isNumber && number >= 0 && number <= 1; 
+0

雖然你說的是真的,但你認爲提問的人有選擇權。如果他們正在配置一個工具,他們唯一的選擇是指定模式(例如,想象一個語法着色庫,它可以讓你將顏色與模式匹配)。 –

+0

@BryanOakley,你說得對,這可能不是OP的選擇。 OP總是可以自由地使用我的答案或者無視它 - 不提及在這樣的問題的答案中不使用正則表達式的選項是錯誤的。當我發佈我的答案時,已經發布了一些基於正則表達式的解決方案,所以我認爲OP不再需要這些解決方案。 – driis

+0

@BryanOakley你是對的。這是我的問題 – codingbiz