0

我想在 c# 中创建正则表达式,它为具有空白/空格/空值或具有 2 个小数点的十进制值的值返回 true。因此不接受除此之外的值。

4

4 回答 4

2

虽然可能不是最有效的,但这个正则表达式应该做你想做的事:

^((\d+[\.]\d{2})|([\.]\d{2})|()|\s*)$

它要求任何十进制数都有两位小数,但它确实接受 0.99 或 .99 作为示例。

如果您想允许用户输入 9 或 9.0 或 9.01(即不强制用户输入两位小数),您可以像这样修改上面的内容:

^((\d+([\.]\d{0,2})*)|([\.]\d{0,2})|()|\s*)$

它只是将量词设置为 {0,2} 而不是 {2},并使小数位的存在可选。

于 2012-11-15T19:29:11.487 回答
0

我建议使用这种模式来处理数字和空字符串场景。

^[-+]?\d*(\.\d{2})?|\s*$

Reagrding NULL,我经历过,当我们null在 RegEx 中作为输入传递时,它会抛出ArgumentNullException。所以我的建议是通过匹配来验证NULL使用运算符:!=null

if(str != null && RegEx.IsMatch(str,@"^[-+]?\d*(\.\d{2})?|\s*$"))
   // valid data

在哪里:

str = 包含验证数据的字符串

上述模式还允许: -. 00-0.00作为验证小数。

于 2012-11-15T21:24:29.483 回答
0
^\s*(?:[+-]?\d*\.\d{2})?\s*$

匹配恰好有两个小数位的数字,可选地用空格或空/仅空格字符串包围。

于 2012-07-18T08:40:02.420 回答
0

使用这个正则表达式^(\s+)|(([+-])?\d+[,\.]\d{2})|()|(null)$

于 2012-07-18T08:42:57.307 回答