在C#中验证货币格式

时间:2015-11-06 05:27:08

标签: c# c#-4.0

我想验证一个字符串是否满足以下货币格式,最多包含4个小数位,并且可以允许逗号, ,无论文化逗号可以在哪些地方标准做法

例如:

2,000,000(valid)  
200000.0000(valid)  
200 (valid)  
200.00000(invalid)

怎么可能呢?

1 个答案:

答案 0 :(得分:5)

您可以根据自己的目的进行Regex匹配。

以下Regex适用于您的具体示例。但是,它会在随机位置接受逗号,Demo这里。

^\d+(\,\d+)*(\.\d{1,4})?$

以下是更好的Regex。检查demo。基础正则表达式取自this帖子。

^\$?(\d{1,3},(\d{3},)*\d{3}|\d+)(.\d{1,4})?$

更新

要回答评论 - 上面Regex允许0090。试试这个吧。演示here

^((([1-9]\d{0,2},(\d{3},)*\d{3}|[1-9]\d*)(.\d{1,4})?)|(0\.\d{1,4}))$

更新2

C#用法

var currencyString = "1,234,456.7890";
var regex = @"^((([1-9]\d{0,2},(\d{3},)*\d{3}|[1-9]\d*)(.\d{1,4})?)|(0\.\d{1,4}))$";
var isValidCurency = Regex.IsMatch(currencyString, regex);

更新3

根据OP,任何地方都允许使用逗号,。使用演示here更新了Regex

^(([1-9]\d*(\,\d+)*(\.\d{1,4})?)|(0\.\d{1,4})|0)$

更新4

使用这个。演示HERE

^((([1-9]\d{0,2}(,\d{3})*)(\.\d{1,4})?)|[1-9]\d*|(0\.\d{1,4})|0)$

好吧,this:)

^((([1-9]\d{0,2}(,\d{3})*|[1-9]\d*)(\.\d{1,4})?)|[1-9]\d*|(0\.\d{1,4})|0)$