【问题标题】:Regex Validator and Rad Numeric Text Box Preventing me from saving正则表达式验证器和 Rad 数字文本框阻止我保存
【发布时间】:2017-03-15 05:50:23
【问题描述】:

我有以下正则表达式验证器-

<asp:RegularExpressionValidator ID="targetNumValidator" runat="server" Display="Dynamic" ValidationExpression="/^\d{0,7}(\.\d{0,2})?$/" ControlToValidate="txtTargetNum"></asp:RegularExpressionValidator>

使用以下 Rad 数字文本框-

<telerik:RadNumericTextBox ID="txtTargetNum" MaxLength="12" NumberFormat-DecimalDigits="2" runat="server">
</telerik:RadNumericTextBox>

我试图限制用户最多输入 12 位数字,始终包括两位小数。

好例子-

123.00
123.12
1234567891.00
12345.34

不好的例子-

123.222
12345678912.00

我相信我的正则表达式可以成功实现这个目标,但是每当我通过保存按钮保存值时,它都会因为正则表达式而停止。如果我将该字段留空,保存按钮仍然可以正常工作,所以我知道它是由正则表达式引起的。

【问题讨论】:

  • 为什么1234567891.00 是个坏例子?
  • 糟糕,忘记了一个数字。我更新了示例。谢谢
  • 这个怎么样? ^\d{1,10}\.\d{2}$, {,} 表示字符乘数,因此在您的情况下,在开始时您需要任何数字出现 1 到 10 次,这可以通过 \d{1,10} 实现,然后是转义点 \.,然后是其他任何数字数字,但这次正好是其中的两个,因此是 \d{2}
  • @harristyle 您应该将此作为答案发布,因为它解决了 OPs 问题;)
  • 我认为这里不需要正则表达式分隔符,/ 应该被删除。

标签: .net regex validation


【解决方案1】:

我尝试了harristyle 的正则表达式,在对其进行了一些小调整后我最终使用了它。由于 rad 数字文本框会自动添加一个小数位和两个零,如果我输入一个数字,例如 1234,这将导致文本框显示 1234.00。我必须将小数位和字符串的其余部分设为可选。当我保存数据时,仍然包含十进制值。

这是我用的表达方式-

^\d{1,10}\.?\d{2}$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 2011-11-24
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多