我想要一个用于十进制输入的正则表达式,它可以在小数点或逗号前取 4 位数字,在小数点/逗号后取 2 位数字。不带小数的 5 位数字无效。也可以接受null。
正确的值可以是:
1、1111、2222.56、0.99、9999.5
无效的
88888, 8.888,
验证显示还包括逗号和小数。
如果可能的话,还要解释表达式。
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)
^-?(0|[1-9]\d{0,3})([,\.]\d{1,2})?$
逗号前:
^ - 字符串的开头
-?- 可能有零个或一个负号
0 - 小数点的开头可能只有一个零...
| - 或者 ...
[1-9] - 从 1 到 9 的任意数字
\d{0,3} - 后跟任意 3 位数字
逗号后:
[,.] - 可能有“,”或“.”
\d{1,2} - 后跟 1 或 2 位数字
(……)?- 零次或一次
$ - 字符串的结尾
[0-9]{1,4}(\.[0-9]{1,2})?
这意味着,1 到 4 位数字,然后可选地包含小数点和 1 到 2 位数字。
使用这个正则表达式\d{4}[,\.]\d{2}
或\d+([,\.]\d+)?
任何小数
我们可以通过以下代码来检查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