【发布时间】:2014-01-31 01:57:12
【问题描述】:
我正在尝试验证最多包含 3 个十进制数字的数字。
我的正则表达式是 ^\d+([.,]\d{1,3})?$
我忽略了语言中的文化差异(CultureInvariant 属性为真),这就是我在表达式中添加“,”的原因。
我尝试了以下测试:
- 1000(输入:正确;结果:通过)
- 0,(输入:不正确;结果:失败)
- 1.111(输入:正确;结果:通过)
- 空格(输入:不正确;结果:通过)
即使使用 ^ 和 $ 符号,它也允许用户输入空格并且不会显示我的验证错误。
出了什么问题?
更新:
以下是我在 aspx 文件中的代码:
<td>
<asp:TextBox ID="txtBuildingSize" CssClass="textbox" runat="server"
ToolTip="in Sq Ft" meta:resourcekey="txtBuildingSizeResource1"></asp:TextBox>
<asp:Label ID="lblSqM1" runat="server" CssClass="optionLabel"
meta:resourcekey="lblSqM1Resource1" Text="square meters"></asp:Label>
</td>
<td>
<asp:RegularExpressionValidator ID="strBuildingSizeValidator"
ControlToValidate="txtBuildingSize" Display="Dynamic"
runat="server" ForeColor="Red" ValidationExpression="^\d+([.,]\d{1,3})?$"
meta:resourcekey="strBuildingSizeValidatorResource1"
Text="* Max 3 decimals only"></asp:RegularExpressionValidator>
更新 2:我尝试再次对其进行测试。正则表达式工作正常。它不允许在表单中提交输入,直到我清除文本框中的空格。现在,唯一的问题是当您尝试输入空格时它不会显示验证错误。
已解决:^\d+([.,]\d{1,3}\ {0,0})?$
(space){0,0} 成功了。出现错误消息。
【问题讨论】:
-
该正则表达式似乎有效,不应允许空格。你确定你是在空白输入的情况下触发它吗?调试和检查。
-
我使用了单个空格字符。然后我尝试按住空格键,但在任何情况下它都没有尝试拍摄验证错误。我尝试使用 javascript 代码禁用空格键,它似乎有效。但是我很好奇为什么正则表达式(启用了javascript)仍然不起作用。
-
那么您的客户端 JS 有问题吗?
-
我猜是的。即使我将浏览器更改为 Mozilla Firefox,我也没有得到适当的结果。
-
你的表达是正确的。看来你对你的Regex表达式的application的理解是不正确的。
标签: .net regex decimal whitespace