【问题标题】:regex to validate double values正则表达式验证双精度值
【发布时间】:2010-10-04 00:14:56
【问题描述】:

我正在尝试使用正则表达式来验证双精度值。我承认我对正则表达式很垃圾,真的应该买一本书......无论如何范围很大,所以这里是:

.01 到 99.99 是范围,前导 '00' 是可选的,'.' 也是如此尾随的“.00”也是如此。所以用户可以输入 0.1 00.01, 0.11, 1, 1.0 1.00 这些都是有效的。

谢谢,r.

【问题讨论】:

  • 您在 C# (.NET) 正则表达式中执行此操作?如果是这样,你应该去掉visual-studio 标签; VS 有自己的正则表达式风格,这与.NET 非常不同。 (如果有人建议使用:n,他们说的是VS。)
  • 谢谢艾伦,我会记住的。

标签: c# regex visual-studio-2008


【解决方案1】:

而不是 RegEx,为什么不使用 double 的 TryParse 方法?

string[] sa = new string[] { "00.01", "1.00", "xx" };
double d;
bool isValid;
foreach (string s in sa)
{
    isValid = double.TryParse(s, out d) && d >= 0.01d && d <= 99.99d;
    Console.WriteLine("{0}: {1}", s, isValid.ToString());
}

【讨论】:

  • &amp;&amp; d &gt;= 0.01m &amp;&amp; d &lt;= 99.99m
  • +1 建议不要使用正则表达式,尽管您的答案不完整 - 您应该对其进行编辑以添加范围检查。
  • 感谢您建议 tryparse() 出于某种原因我一直在使用 reg 表达式并陷入了思维定势……tryparse 实现起来要容易得多……哈哈,谢谢。
  • 添加了范围检查,错过了那部分。
  • 有时需要正则表达式。例如在使用属性时:[RegularExpression(ConstIntRegex, ErrorMessage = ConstValidationMessage)]
【解决方案2】:
^[0-9]{0,2}\.?[0-9]{0,2}$

你可以在这里试试:http://www.regular-expressions.info/javascriptexample.html

【讨论】:

  • 这实际上也接受 3 或 4 位整数(100-999 和 1000-9999)以及空字符串和字符串.
  • @Mark Byers,它适用于引用的所有示例:0.1 00.01、0.11、1、1.0 1.00。而且,感谢您指出@eldarerathis - 它也匹配 3/4 位整数和空字符串:-/
猜你喜欢
  • 1970-01-01
  • 2018-01-10
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 2020-06-19
  • 2022-11-23
  • 1970-01-01
相关资源
最近更新 更多