Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 验证数值的正则表达式_Asp.net_Regex_Validation - Fatal编程技术网

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

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

^\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" />