【发布时间】:2009-09-17 11:41:06
【问题描述】:
验证文本框的正则表达式,我可以在 asp.net 中输入整数/浮点值
【问题讨论】:
-
这不是关于正则表达式的唯一未决问题。也许您可以通过regular-expressions.info/tutorial.html 来了解他们的最新情况。
标签: asp.net regex validation
验证文本框的正则表达式,我可以在 asp.net 中输入整数/浮点值
【问题讨论】:
标签: asp.net regex validation
为什么不使用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" />
【讨论】:
^[-+]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)?$
将匹配以下(示例):
3.4
34.34
45345
-34
.55
-.45
-2.2
1.0e-10
45.
1.e308
【讨论】:
试试这个:
^\d*\.?\d+$
编辑: Fredrik Mörk 提出了极好的建议,以使这种表达具有文化意识。像这样构建表达式字符串:
String regex = String.Format("^\d*\{0}?\d+$",
CultureInfo
.CurrentCulture
.NumberFormat
.CurrencyDecimalSeparator);
【讨论】:
从各种答案中可以看出,正则表达式会增加不必要的复杂性。 float.TryParse() 会明确告诉您该值是否可以设为浮点数。
这还考虑了用户机器上的区域设置,而正则表达式不会(或者如果他们尝试会变得丑陋)。
我会考虑使用类似的东西而不是正则表达式:
bool isValid = float.TryParse(textbox1.Text);
【讨论】:
代码
^[\d.]+$
匹配字符串中的多个点,如“1.1.1”
试试
^\d+(.\d+)?$
改为
您还应该注意,在某些国家/地区使用逗号而不是点。
【讨论】:
^[-+]?[0-9]*\.?[0-9]+$
【讨论】:
\.)。现在它匹配任何字符。