[英]Regular expression validator for 10 digit and numbers only c# asp.net
[英]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.