验证十进制数的正则表达式

4
正则表达式应该匹配以下标准。点号前后的元素数量可以是任意的。只允许一个点号,负号只允许在第一个位置。我不需要逗号。
例如:
1
-1
-1.
1.
1.2
-.2
-0.2
000.300

所有上述表达式的结果都应该为true。
所以如果我分开来...
  1. 可选的负号在第一位。
  2. 点之前可以有零个或更多数字。
  3. 点是可选的。最多出现一次。它也可以是纯整数。
  4. 点后可以有零个或更多位数字。
任何帮助都将不胜感激。

1
我喜欢那个网站,可以找到经过测试的好正则表达式 :) 这里有一个:^[-+]?\d+(.\d+)?$ - Tony
5
为什么要使用正则表达式?你可以尝试使用 decimal.TryParse() 代替。 - MarcinJuraszek
可能是 http://stackoverflow.com/questions/11896274/regular-expression-for-validating-decimal-numbers 和其他一些问题的重复。 - Konrad Morawski
@MarcinJuraszek 没错,每个人都在使用dotNet... ;) - ian
2
@iain 这个问题被标记为 C# 标签,并且在标题中有 C#。这就是我发表评论的原因。顺便说一句,我不知道 @konrad 为什么删除了那个标签... - MarcinJuraszek
显示剩余4条评论
3个回答

5
您可能想要的是这个:
^-?\d*\.?\d*

这段文本涉及到IT技术,讲解了如何验证一个浮点数是否有效。其中,需要匹配可能的负号 (-?)、任意数量的数字 (\d*)、可能的小数点 (\.) 以及小数点后面的任意数量的数字 (\d*)。如果你只是想验证它是否为有效的浮点数,那么@MarcinJuraszek说得很好,也许你不需要在这里使用正则表达式。


使用这个解决方案,您会使用哪种 Regex 方法?我目前正在使用以下方式与 IsMatch 结合使用:Regex.IsMatch(string, @"^-?\d*\.?\d*"),但没有得到任何结果。 - Eric after dark
它接受一个无效的输入 (4.)。如果有一个点,后面必须跟着一个数字。你该怎么做? - Pouya BCD

2

1)第一位可选负号:

^ : 字符串开始

- : 负号

? : 使前一个字符可选

2)零或多个数字

/d : 数字

* :匹配前一个东西的所有(包括零)

3)小数点可选

. : 小数点

? : 使小数点可选

4)小数点后可有0或多个数字

/d : 数字

* :匹配前一个东西的所有(包括零)

所以总体来说:^-?/d*.?/d*


0

这是我的解决方案

优点

  • 用户可以指定精度
  • 接受逗号或点
  • 接受负值
  • 接受整数

缺点

  • 无法处理.0或0. :(

[-]?\d{1,18}(?:[,.]\d{1,2})?$


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接