验证货币金额

时间:2011-05-19 13:30:09

标签: c# .net validation

我需要接受有效金额的值。该应用程序支持多种语言环境,因此我需要接受以下格式的金额:

10.05或10,05(在某些区域设置逗号中用于小数分隔符)

它不应接受像10.456或10,456

这样的值

不允许用户输入美元,英镑或欧元等符号。也不允许使用逗号分隔符(数千,数百万,数十亿等)。此外,不允许使用负数或零值金额。

是否有内置的.NET方法来验证这一点?很难使用正则表达式,因为我需要根据语言环境允许使用逗号或小数点分隔符。

5 个答案:

答案 0 :(得分:1)

查看带有多个参数的double.TryParse函数,特别是NumberFormats枚举。如果要指定正确的区域性,它可以处理逗号与小数的问题。我认为你需要单独处理负面/零点问题。

答案 1 :(得分:1)

我会做以下事情:

  • 替换,用。

  • 如果的位置。 in string<比stringlength-2 - >不接受

  • 解析加倍,如果失败 - >不接受

答案 2 :(得分:1)

我知道你提到没有使用RegEx,但似乎你对逗号或句号的要求非常简单。不会有这样的工作吗?

^\d*(\.|,)\d{2}

它匹配多个前导数字,检查句点OR逗号,然后只匹配2个尾随数字。

答案 3 :(得分:1)

使用double.TryParse。它处理你想要的一切。如果不符合您的需求,您可以提供自定义的NumberStylescustom FormatProvider

答案 4 :(得分:0)

假设您使用的是Asp.Net,请尝试CompareValidator。您可以将Type属性设置为currency。如果将Operator属性设置为ValidationCompareOperator.DataTypeCheckCompareValidator控件将忽略ControlToCompareValueToCompare属性,并只是指示输入控件中的值是否输入可以转换为Type属性指定的数据类型。