我想在 c# 中创建正则表达式,它为具有空白/空格/空值或具有 2 个小数点的十进制值的值返回 true。因此不接受除此之外的值。
问问题
2180 次
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 回答