我需要接受有效金额的值。该应用程序支持多种语言环境,因此我需要接受以下格式的金额:
10.05或10,05(在某些区域设置逗号中用于小数分隔符)
它不应接受像10.456或10,456
这样的值不允许用户输入美元,英镑或欧元等符号。也不允许使用逗号分隔符(数千,数百万,数十亿等)。此外,不允许使用负数或零值金额。
是否有内置的.NET方法来验证这一点?很难使用正则表达式,因为我需要根据语言环境允许使用逗号或小数点分隔符。
答案 0 :(得分:1)
查看带有多个参数的double.TryParse
函数,特别是NumberFormats
枚举。如果要指定正确的区域性,它可以处理逗号与小数的问题。我认为你需要单独处理负面/零点问题。
答案 1 :(得分:1)
我会做以下事情:
替换,用。
如果的位置。 in string<比stringlength-2 - >不接受
解析加倍,如果失败 - >不接受
答案 2 :(得分:1)
我知道你提到没有使用RegEx,但似乎你对逗号或句号的要求非常简单。不会有这样的工作吗?
^\d*(\.|,)\d{2}
它匹配多个前导数字,检查句点OR逗号,然后只匹配2个尾随数字。
答案 3 :(得分:1)
使用double.TryParse。它处理你想要的一切。如果不符合您的需求,您可以提供自定义的NumberStyles和custom FormatProvider。
答案 4 :(得分:0)
假设您使用的是Asp.Net,请尝试CompareValidator。您可以将Type属性设置为currency。如果将Operator
属性设置为ValidationCompareOperator.DataTypeCheck
,CompareValidator
控件将忽略ControlToCompare
和ValueToCompare
属性,并只是指示输入控件中的值是否输入可以转换为Type属性指定的数据类型。