用于验证十进制值的正则表达式

时间:2013-11-01 04:11:16

标签: c# regex winforms validation expression

我现在正在使用这个正则表达式,

Regex rg = new Regex(@"\d{1,16}\.?|\d{0,16}\.\d{1,3}");

验证输入到文本框中的小数值。它工作正常。但它允许用户输入十进制值以及2.a2\等非数字字符。

我认为错误的部分在这里\.?。我使用过?所以它接受字母值? 我尝试过像\.[0-9]?这样的东西,但它不起作用。

以下是有效和无效的值:

  • 1 - 从0 - 9
  • 生效
  • 11 - 无效
  • 11.1 - 无效
  • 11.11 - 无效
  • 11.1111 - 有效期至小数点后4位
  • 1a - 无效
  • 1 \ - 无效
  • 1.1a - 无效
  • a - 无效

SO上可能存在重复的问题。但有效的正则表达式令牌因实现而异。这就是我在这里问了一个新问题的原因。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

您可以使用该正则表达式:

^\d{1,16}(\.\d{1,4})?$

首先验证1到16位数之间的可选点和1到4位数。

如果你想要总是有点,你应该使用:

^\d{1,16}((\.\d{1,4})|(\.))?$

答案 1 :(得分:1)

正则表达式

^\d{1,16}(\.\d{1,4})?$

工作正常,如果您想要识别是否只有点可以添加

^(\d{1,16})|(\d{1,16}\.{1}\d{0,4})|(\d{1,16}\.{1})$

它不像另一个那样优雅,但适用于您发布的场景。