2016-09-12 61 views
1

我有一個屬性Year01。我已經裝飾了相同的只有十進制數字。但一旦它獲得價值-15(減十五),就會中斷。
如何糾正?十進制正則表達式取負值

[RegularExpression(@"^\s*?([\d\,]+(\.\d+)?|\.\d+)\s*$", ErrorMessage = "Only decimal numbers are allowed")] 
public string YEAR01 { get; set; } 

謝謝。

+2

爲什麼你使用'string'類型如果你正在使用它來存儲十進制值?使用'decimal'類型有什麼問題? – Shyju

+0

我不能使用它...我正在修復別人的代碼...我不知道他爲什麼拿字符串...我的思想還提出了爲什麼不是字符串的十進制數? – user662285

回答

0

讓我們來看看正則表達式使用的是:

^\s*?([\d\,]+(\.\d+)?|\.\d+)\s*$ 

第一個符號^,它代表一行的開始。 \s是一個空格符號,*表示這個符號可以出現多次,?符號代表0 or greater空格的出現次數。所以這組符號簡單地在行起始處刪除空白。

類似的序列可以在正則表達式的結尾處,不用?跡象,其中,因爲我認爲,可以複製到你的正則表達式的左側,$代表結束的行。

在這個空間切割之間構建你都可以發現一個數字字符串,其中說,這個數字可以包含數字和千個分隔符([\d\,]+任何序列的主檢查說,我們正在尋找一個one or greater出現的次數爲數字後跟千位分隔符),然後我們可以或不可以找到它後面的小數點分隔符和數字。

所以,你想要做的改變是很簡單,你只需要在主符號組開始用問號-符號附加檢查,如:

^\s*?(-?[\d\,]+(\.\d+)?|\.\d+)\s*$ 

你可以找到更多有用的正則表達式示例here