如何验证dotnet core 2中的货币独立于文化

时间:2018-02-19 21:58:42

标签: .net validation currency

对于项目,我需要验证货币。 要求是:

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

有人知道如何使验证工作。

问候,

鲁洛夫

1 个答案:

答案 0 :(得分:1)

您可以这样解析货币:

decimal currency = decimal.Parse("123.456", NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"));

如果你不想在点后接受三个位置,你有两种方法:

如果你需要漂浮,你可以投射十进制结果。