我想验证一个字符串是否满足以下货币格式,最多包含4个小数位,并且可以允许逗号,
,无论文化和逗号可以在哪些地方标准做法。
例如:
2,000,000(valid)
200000.0000(valid)
200 (valid)
200.00000(invalid)
怎么可能呢?
答案 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)$