对于项目,我需要验证货币。 要求是:
12有效 12.1有效 12.12也有效 12.123无效。
现在我可以使用正则表达式验证这个[RegularExpression(@"^(?!0\.00)\d{1,3}(.\d{3})*(\,\d\d)?$", ErrorMessage = "Must be a currency with no more then 2 digits after the." )]
但是在测试时,当有人使用另一个系统时,它会失败。 所以在荷兰我们使用12,00并且验证 但在美国和英国,他们使用12.00并且没有验证
我也可以使用这样的验证:
float num;
bool isValid = float.TryParse(str, NumberStyles.Currency,CultureInfo.GetCultureInfo("en-US"), // cached
out num);
然后我无法测试数字后面只有2个数字。
我可以设置一种文化但是然后它可能会输入像2.45这样的数量,他们已经习惯了2,45
有人知道如何使验证工作。
问候,
鲁洛夫
答案 0 :(得分:1)
您可以这样解析货币:
decimal currency = decimal.Parse("123.456", NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"));
如果你不想在点后接受三个位置,你有两种方法:
如果你需要漂浮,你可以投射十进制结果。