我现在正在使用这个正则表达式,
Regex rg = new Regex(@"\d{1,16}\.?|\d{0,16}\.\d{1,3}");
验证输入到文本框中的小数值。它工作正常。但它允许用户输入十进制值以及2.a
或2\
等非数字字符。
我认为错误的部分在这里\.?
。我使用过?
所以它接受字母值?
我尝试过像\.[0-9]?
这样的东西,但它不起作用。
以下是有效和无效的值:
SO上可能存在重复的问题。但有效的正则表达式令牌因实现而异。这就是我在这里问了一个新问题的原因。任何帮助将不胜感激!
答案 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})$
它不像另一个那样优雅,但适用于您发布的场景。