【发布时间】:2011-01-05 05:10:36
【问题描述】:
我需要一个只排除可被 1.5 整除的数字的正则表达式。我不知道这是否可能?
我检查了正则表达式库,但上面没有任何内容。有人有什么想法吗?
【问题讨论】:
标签: asp.net regex validation
我需要一个只排除可被 1.5 整除的数字的正则表达式。我不知道这是否可能?
我检查了正则表达式库,但上面没有任何内容。有人有什么想法吗?
【问题讨论】:
标签: asp.net regex validation
正如其他人所说,Regex 不是正确的工具,最好使用如下所示的 CustomValidator:
<asp:CustomValidator ID="DivisibleByOnePointFiveValidator" runat="server" ErrorMessage="Must be divisible by 1.5!"
Display="Dynamic" ControlToValidate="MyTextBox" EnableClientScript="false"
OnServerValidate="DivisibleByOnePointFiveValidator_ServerValidate" >
</asp:CustomValidator>
protected void DivisibleByOnePointFiveValidator_ServerValidate(object source, ServerValidateEventArgs args)
{
decimal inputValue;
if (!decimal.TryParse(args.Value, out inputValue))
{
args.IsValid = false;
return;
}
args.IsValid = inputValue % 1.5M == 0;
}
【讨论】:
正则表达式用于字符串验证,而不是数字验证(除了说明某事物是否为数字)。为此,您将需要一个自定义验证器。
【讨论】:
使用正则表达式来验证数值不是一个好主意。最好为此目的编写一个小的验证器函数。
您可以使用此正则表达式非常轻松地验证数字/非数字:[0-9]+ 当然,这将允许许多前导零并且不考虑小数。您可以变得更复杂,例如[0-9]+(\.(0|[0-9]+))? 我认为这将使小数成为可选的。我们甚至还没有开始研究负号、科学记数法和其他记数法格式。如果您指定允许的输入格式,我们可以更轻松地使用正则表达式提供帮助。
【讨论】: