簡體   English   中英

asp.net c#格式化數字的正則表達式驗證器

[英]asp.net c# Regular Expression Validator for formatted numbers

我有一個帶有數值的文本框。 例如,該數字是23542.56。 該數字在MySQL數據庫中存儲為double。

我將數字轉換為十進制並將其格式化為字符串,同時我從數據庫加載數值與千位分隔符... ToString(“N”)。

TextBox.Text = Convert.ToDecimal(mdr["Value"].ToString()).ToString("N");

我的正則表達式驗證器只接受數字和逗號:

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox" ValidationExpression="^\d+(\,\d+$)?$" ValidationGroup="NumericValidate">Allowed Chars are: 0-9 und ,</asp:RegularExpressionValidator>

問題是Validator不接受格式化的數字,例如23.542,56。 什么是讓他只接受“0-9和”的正確方法,但也接受千位分隔符?

提前致謝...

信息:將“28542.56”顯示為“23.542,56”是德國的常用符號,這就是我用這種方式格式化數字的原因。

你不需要逃避逗號,但你必須逃避點. ,否則它將匹配每個字符,如.* ,匹配所有內容。

[方括號]匹配給定類中包含點的任何字符 . ,逗號,和數字。

如果你想要更嚴格並且有三胞胎,你必須這樣做:

  thousands v          v literal comma
^\d{1,3}(?:\.\d{3})*(?:,\d*)?$
         ^           ^ non-capturing-groups

這仍然會將不正確的數字與前導零0匹配,例如:

00
01
003.999,99

有一種非常簡單的方法可以排除這些。 我留給你作為家庭作業:)提示: [1-9]


編輯:只接受1 1,11 1.111 1.111,11 1111,11

這個正則表達式應該是:

^1+(?:\.111)*(?:,11)?$

對於某些角落情況可能會略有不同,但基本上就是這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM