创建正则表达式以接受空格/空格或十进制值

时间:2012-07-18 08:35:42

标签: c# .net regex

我想在c#中创建正则表达式,对于具有空白/空格/空值的值或具有2个小数点的十进制值返回true。所以不接受除此之外的其他内容。

4 个答案:

答案 0 :(得分: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},并使小数位的存在成为可选项。

答案 1 :(得分:0)

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

匹配一个带有正好两位小数的数字,可选地用空格包围,或者只用空/空白字符串。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我建议使用此模式处理数字和空字符串方案。

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

重新NULL,我已经体验过,当我们将null作为输入传递给RegEx时,它会抛出ArgumentNullException。因此,我的建议是通过与NULL匹配来使用!=运算符验证null

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

其中:

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

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