2013-07-31 65 views
0

我有一個函數可以創建用於驗證小數的正則表達式字符串。正則表達式字符串用於驗證不包括零的十進制

public static string DecimalWithPlaces(int wholePart, int fractionalPart) 
{ 
    return @"^-?[0-9]{0," + wholePart + @"}\.[0-9]{1," + fractionalPart + @"}$"; 
} 

任何人都可以讓我知道我該如何排除零?

例如: 「0」, 「0.0」, 「0.00」 等不應當被匹配。

謝謝

+0

@Amy - 我想你應該發佈一個代碼示例作爲答案,因爲這比做RegEx好多了。正則表達式很有用,但是有太多開發人員(IMO)會在有更簡單(並且更易讀/可維護)的方式來實現其目標時轉向它。 – Tim

+1

您可能只是在表達式開始處添加負面預測'(?!0 +(?:\。0 +)?)' – HamZa

+0

您爲什麼要「驗證小數」?你會用它做什麼?執行算術?有效小數的算術可能無效。將它存儲在數據庫中?數據庫可以拒絕有效的小數。我聞到[XY問題](http://meta.stackexchange.com/questions/66377)。 –

回答

0

艾米的權利 - 例子會很好。

但是,我要盲目。

你要排除所有零或零隻是價值?

要排除零,試試看看會發生什麼。

public static string DecimalWithPlaces(int wholePart, int fractionalPart) 
{ 
    return @"^-?[1-9]{0," + wholePart + @"}\.[1-9]{1," + fractionalPart + @"}$"; 
} 

要排除數字零...這實際上不是一個很好的檢查正則表達式。這是一個價值檢查。

在我的書,你應該使用的價值兩個驗證步驟。一個檢查它是否符合上述正則表達式的精度/比例要求,另一個檢查它是否爲非零值。

我相信,使用正則表達式的值爲零的事情是可能的。但我強烈建議不要這樣做。也就是說,如果你承諾忽略這個建議,那麼你可能會想看看Negative Lookahead正則表達式結構。

+0

這不會捕獲像0.9或25.0等數字等 –

+0

我誤讀了我第一次通讀的問題 - 認爲這是想要的。快速編輯以提供額外的信息。想想你剛剛錯過了我的編輯大約一分鐘。 –

+0

忽略組分隔符...我真的想給你努力的努力,但獲得可接受的解析十進制/浮點值的正則表達式是痛苦的 - 不確定是否正確使用正確的解決方案或建議反對是正確的方法來使答案更好。 .. –

相關問題