2012-06-15 60 views
-1

我使用下面的表達式來驗證一個帶有十進制數字的文本框。但它接受12,-1.0,12.0,12.5,1.0等。但我想要一個像這樣的「12.4」正則表達式。前兩位數和小數點,後面跟一個數字。字符串的asp.net正則表達式驗證器爲十進制

ValidationExpression="^-?[0-9]{0,2}(\.[0-5]{1,1})?$|^-?(100)(\.[0]{1,2})?$" 
+1

你的描述不清楚。在你的樣本輸入中,[12,-1.0,12.0,12.5,1.0]',你想匹配哪些,哪些不匹配? –

+1

可能需要使用一組例外和排除號碼來更清楚。在你的例子中,你說你不想12.5但想要12.4? –

+0

我需要像這個兩位數字的精確數字。最後的單個數字僅爲5。 「10.5」像這樣 – Amulraj

回答

2

首先,該正則表達式是嚴重過於複雜。整個事情可以改寫爲

^-?([0-9]{0,2}(\.[0-5])?|100(\.00?)?)$ 

...並具有完全相同的效果。但基於您的評論,你正在尋找的東西要嚴格得多:

^[0-9]{2}\.5$ 

我不是你爲什麼要這麼做清楚,但這樣做你所描述什麼。如果您不想強制最後一位數字爲5(您的評論不清楚),請使用^[0-9]{2}\.[0-9]$

1
expr = `@"^\d{1,2}\.\d$"`; 

開始 - 兩個數字 - 小數點 - 個位數。沒有減號,沒有整數。那是你要的嗎?

+0

對我來說也是如此,所以得到讚揚。順便說一下,['\ d'也匹配.NET正則表達式中的unicode數字](http://www.regular-expressions.info/refflavors.html),這就是爲什麼我用'[0-9]去'因爲奇怪嚴格的要求。 –

+0

以1 *或* 2數字開始的實際值。 –

0

如果你想小數點前兩個數字,一個數字的小數點後嘗試這種

-?[1-9][0-9][\.][0-9] 
+0

非常感謝。它的工作正常。 – Amulraj

+0

'.'會匹配任何字符,因爲你沒有逃脫它。這將匹配'12 @ 3',這是錯誤的。另外,當' - ?'工作正常時,你不需要' - {0,1}'。 –

+0

@JustinMorgan感謝您糾正我。我編輯了我的答案。 – Luftwaffe

0

我測試了以下表達式在WPF它工作正常檢查一次這個

string sExpression = @"^[0-9][0-9]\.[0-9]$"; 
0

您可以在ASPX頁面使用此代碼。在ValidationExpression屬性中使用^[1-9]\d*(\.\d+)?$

<asp:TextBox runat="server" ID="txtprice" width="50" /> 
     <asp:RegularExpressionValidator runat="server" ErrorMessage="Decimal Only" ControlToValidate="txtprice" 
     ValidationExpression="^[1-9]\d*(\.\d+)?$"></asp:RegularExpressionValidator>