![](/img/trans.png)
[英]How do I verify/validate a float before storing as decimal(4,1) in SQL?
[英]How do I validate a decimal like this 00.00?
我正在学习验证表达式,并试图编写一个像下面的示例一样检查十进制的表达式,但是我遇到了一些问题。
要验证的数字如下所示:
00.00(任意2个数字,然后是。,然后是任意2个数字)
这就是我所拥有的:
^[0-9]{2}[.][0-9]{2}$
该表达式返回false,但是从我读到的教程中可以理解,该表达式应这样写:
^ = starting character
[0-9] = any number 0-9
{2} = 2 numbers 0-9
[.] = full stop
$ = end
使用正确的工具完成工作。 如果要解析小数,请使用decimal.TryParse
而不是Regex。
string input = "00.00";
decimal d;
var parsed = Decimal.TryParse(input, out d);
如果要求始终是2位数字,然后是小数点然后是2位数字,则可以执行以下操作:
var lessThan100 = d < 100m;
var twoDecimals = d % 0.01m == 0;
var allOkay = parsed && lessThan100 && twoDecimals;
所以我们的结果是
Stage | input = "" | "abc" | "00.00" | "123" | "0.1234"
-------------------------------------------------------------
parsed | false | false | true | true | true
lessThan100 | - | - | true | false | true
twoDecimals | - | - | true | - | false
虽然如果您确实需要它是那种确切的格式,那么您可以
var separator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
var allOkay = isOkay && input.Length == 5 && input[2] == separator;
如果您绝对必须使用Regex,则可以根据需要执行以下操作:
Regex.IsMatch("12.34", @"^([0-9]{2}\.[0-9]{2})$")
正则表达式说明:
^
-字符串开头 ()
-匹配方括号内的内容 [0-9]{2}
恰好是2个字符,范围为[0-9]{2}
\\.
-句号(转义) $
-字符串结尾
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.