十进制值的正则表达式

时间:2012-07-11 11:45:30

标签: c# regex

我想要一个十进制输入的正则表达式,可以在十进制或逗号前加4位数,在十进制/逗号后加2位数。没有小数的5位数字无效。也可以接受null。

正确值可以是:

  

1,1111,2222.56,0.99,9999.5

无效

  

88888,8.888,

验证显示还包括逗号和小数。

如果可能,那么也解释一下表达式。

5 个答案:

答案 0 :(得分:11)

Regex.IsMatch(strInput, @"[\d]{1,4}([.,][\d]{1,2})?");

并解释:

[\d]{1,4}    any character of: digits (0-9) between 1 and 4 times

[.,]         any character of: '.', ','

[\d]{1,2}    any character of: digits (0-9) between 1 and 2 times

(...)?       match the expression or not (zero or one)

答案 1 :(得分:2)

^-?(0|[1-9]\d{0,3})([,\.]\d{1,2})?$

在COMMA之前:

^ - 字符串的开头

- ? - 可能有零个或一个负号

0 - 十进制可能从一开始只有一个零开始......

| - 或者......

[1-9] - 任意数字从1到9

\ d {0,3} - 后跟任意3位

COMMA之后:

[,。] - 可能有“,”或“。”

\ d {1,2} - 后跟1或2位

(...)? - 零或一次

$ - 字符串的结尾

答案 2 :(得分:1)

[0-9]{1,4}(\.[0-9]{1,2})?

这意味着,1到4位数,然后可选择小数点和1到2位数。

答案 3 :(得分:0)

使用此正则表达式\d{4}[,\.]\d{2}\d+([,\.]\d+)?任何小数

答案 4 :(得分:0)

我们可以通过以下代码

来执行检查字符串值包含小数点的代码
    Dim Success As Boolean
    If text.Contains(".") Then
        Dim result As Integer = Split(text, ".")(1)
        If result > 0 Then
            Success = True      'Containing Decimal Points greater than
        Else
            Success = False     'Containing "0" as Decimal Points 
        End If
    End If
    Return Success