正则表达式以验证数值

时间:2009-09-17 11:41:07

标签: asp.net regex validation

正则表达式,用于验证文本框,我可以在asp.net中输入整数/浮点值

6 个答案:

答案 0 :(得分:7)

为什么不使用CompareValidator来验证该值是否为数字?

<asp:TextBox ID="numberTextBox" runat="server" /> 
<asp:CompareValidator ID="validator" runat="server" ControlToValidate="numberTextBox" Operator="DataTypeCheck" Type="Double" ErrorMessage="Value must be a number" />

答案 1 :(得分:6)

^[-+]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)?$

将匹配以下(示例):

3.4
34.34
45345
-34
.55
-.45
-2.2
1.0e-10
45.
1.e308

答案 2 :(得分:5)

试试这个:

^\d*\.?\d+$

编辑:FredrikMörk提出了一个很好的建议,让这个表达具有文化意识。像这样构建表达式字符串:

String regex = String.Format("^\d*\{0}?\d+$", 
                             CultureInfo
                             .CurrentCulture
                             .NumberFormat
                             .CurrencyDecimalSeparator);

答案 3 :(得分:4)

从各种答案中可以看出,正则表达式可以添加不必要的复杂性。 float.TryParse()会告诉您确定该值是否可以浮动。

这也考虑了用户机器上的区域设置,正则表达式不会(或者如果他们尝试会变得丑陋)。

我会考虑使用类似这样的东西而不是正则表达式:

bool isValid = float.TryParse(textbox1.Text);

答案 4 :(得分:1)

^。?[ - +] [0-9] * \ [0-9] + $

答案 5 :(得分:1)

代码

  

^ [\ d。] + $

匹配字符串中的多个点,如“1.1.1”

  

^ \ d +(。\ d +)?$

代替

您还应注意,在某些国家/地区使用逗号代替点。