2

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

正确的值可以是:

1、1111、2222.56、0.99、9999.5

无效的

88888, 8.888,

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

如果可能的话,还要解释表达式。

4

5 回答 5

13
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)
于 2012-07-11T11:58:38.883 回答
3
^-?(0|[1-9]\d{0,3})([,\.]\d{1,2})?$

逗号前:

^ - 字符串的开头

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

0 - 小数点的开头可能只有一个零...

| - 或者 ...

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

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

逗号后:

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

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

(……)?- 零次或一次

$ - 字符串的结尾

于 2015-02-18T21:12:09.993 回答
1
[0-9]{1,4}(\.[0-9]{1,2})?

这意味着,1 到 4 位数字,然后可选地包含小数点和 1 到 2 位数字。

于 2012-07-11T11:50:29.477 回答
0

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

于 2012-07-11T11:52:42.067 回答
0

我们可以通过以下代码来检查Stirng值是否包含小数点

    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
于 2014-01-18T07:00:52.973 回答