我創建文本框WPF擴展控制必須只能通過使用正則表達式允許下列輸入:正則表達式只允許0-24浮點數字
- 數量必須是在0和24(0 < =數< = 24)
- 必須只允許浮點後最多兩位數字,例如:0.5,0.55,23.2,23.55
這是相當困難的我找出其中的正則表達式將允許傳遞範圍。我已經開始:
^[0-9]*(?:\.[0-9]*)?$
但它不完全符合我的要求。所以我正在尋求幫助來獲得這個正則表達式。
我創建文本框WPF擴展控制必須只能通過使用正則表達式允許下列輸入:正則表達式只允許0-24浮點數字
這是相當困難的我找出其中的正則表達式將允許傳遞範圍。我已經開始:
^[0-9]*(?:\.[0-9]*)?$
但它不完全符合我的要求。所以我正在尋求幫助來獲得這個正則表達式。
爲什麼要使用正則表達式得到一個頭痛?簡單地分析文本,檢查值的範圍和小數位數:
bool IsValid(string text) {
decimal candidate;
if(decimal.TryParse(text, out candidate)){
if(
candidate >= 0 && // Check lower bound
candidate <= 24 && // CHeck higher bound
Math.Round(candidate, 2) == candidate // Check number of decimals
) {
return true;
}
}
return false;
}
此外,你將通過讓系統處理這避免全球化問題(使用.
,,
取決於文化)。
可能是因爲所有現有的驗證都是由正則表達式完成的,並且不希望引入新的驗證模式? (但我同意你的觀點) – paul
我相信正則表達式是很好的工具,明智地使用。我不認爲將世界重新組合是一個好主意,因爲它很難閱讀,難以維護,甚至有時會導致安全問題(谷歌爲邪惡的正則表達式)。但是確實,使用正則表達式可以保持與應用程序中的其他驗證保持一致,這取決於上下文。 –
@paul - 即使所有其他緊固件都是釘子,也不應該在項目中的一顆螺絲上使用錘子。 –
嘗試這種模式:
^24(?:\\.00?)?|(?:2[0-3]|1?[0-9])(?:\\.[0-9]{1,2})?$
你嘗試過什麼正則表達式? – user7116
好的,我試過這個^ [0-9] *(?:\。[0-9] *)?$ – Arterius