Asp.net 验证数值的正则表达式
正则表达式验证一个文本框,在该文本框中我可以在asp.net中输入整数/浮点值Asp.net 验证数值的正则表达式,asp.net,regex,validation,Asp.net,Regex,Validation,正则表达式验证一个文本框,在该文本框中我可以在asp.net中输入整数/浮点值 ^\d*\.?\d+$ 编辑:Fredrik Mörk提出了一个非常好的建议,让这个表达具有文化意识。按如下方式构建表达式字符串: String regex = String.Format("^\d*\{0}?\d+$", CultureInfo .CurrentCulture
^\d*\.?\d+$
编辑:Fredrik Mörk提出了一个非常好的建议,让这个表达具有文化意识。按如下方式构建表达式字符串:
String regex = String.Format("^\d*\{0}?\d+$",
CultureInfo
.CurrentCulture
.NumberFormat
.CurrencyDecimalSeparator);
^[-+]?[0-9]*\.?[0-9]+$
^[-+]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)?$
将匹配以下内容(示例):
代码
^[\d.]+$
匹配字符串中的多个点,如“1.1.1”
试一试
^\d+(.\d+)$
反而
您还应该注意到,在某些国家,使用逗号代替点。从各种答案中可以看出,正则表达式可能会增加不必要的复杂性
float.TryParse()
将明确告诉您该值是否可以设为float
这还考虑了用户机器上的区域设置,而正则表达式不会这样做(或者如果他们尝试的话会变得难看)
我会考虑使用这样的东西代替正则表达式:
bool isValid = float.TryParse(textbox1.Text);
为什么不使用a来验证该值是否为数字
<asp:TextBox ID="numberTextBox" runat="server" />
<asp:CompareValidator ID="validator" runat="server" ControlToValidate="numberTextBox" Operator="DataTypeCheck" Type="Double" ErrorMessage="Value must be a number" />
您需要从中间“..<代码> \/COD>”中逃脱。现在,它与任何字符都匹配。感谢您的评论,解析器使用了我的斜杠:(这可能是因为您希望在选择十进制分隔符时更具动态性,以便它也与其他地区/区域性兼容。这将不匹配普通的单位整数。(即5)或小于1的浮点数。(即5)@RC-此表达式同时匹配“5”和“.5”是的,正是领先的\d+吸引了你。你怎么能够编辑你的答案而不说你这么做了?我不知道,只是好奇?它是否也应该匹配负数?我原则上同意,但由于这是客户端输入验证,OP可能依赖于使用JavaScript中的表达式来进行验证客户端。这是一个很好的观点。我没有想到。不过,我想说,无论如何,Javascript验证都应该由服务器端验证进行备份,以防客户端关闭JS,或者机器人发送垃圾请求。这不是关于正则表达式的唯一公开问题。也许您可以进行一次演练,以获得您的赛尔夫要跟上他们的步伐。
<asp:TextBox ID="numberTextBox" runat="server" />
<asp:CompareValidator ID="validator" runat="server" ControlToValidate="numberTextBox" Operator="DataTypeCheck" Type="Double" ErrorMessage="Value must be a number" />