什么是“最佳”美国货币正则表达式?

快速搜索货币正则表达式会带来很多结果。


我在选择其中之一时遇到的问题是,如果不测试所有边缘情况,很难验证正则表达式。我可以花很多时间在此上,因为我确信其他数百名开发人员已经做过。


是否有人拥有经过全面测试的美元正则表达式?


我唯一的要求是匹配的字符串是US Currency并解析为System.Decimal:


[ws] [sign] [digits,] digits..fractional-digits] [ws] 


方括号([和])中的元素是可选的。 

下表描述了每个元素。 


元素描述

ws可选的空格。

sign可选标志。

digits一系列数字,范围从0到9。

,一个特定于文化的千位分隔符。

。特定于文化的小数点符号。

分数数字范围从0到9的数字序列。 


炎炎设计
浏览 532回答 3
3回答

红颜莎娜

这是Regex Buddy制造商的一些东西。这些来自图书馆,所以我相信它们已经过全面测试。数字:货币金额(必须为美分),可选的千位分隔符;强制性两位数Match; JGsoft:^[+-]?[0-9]{1,3}(?:,?[0-9]{3})*\.[0-9]{2}$数字:货币金额(可选的美分)可选的千位分隔符;可选的两位数小数Match; JGsoft:^[+-]?[0-9]{1,3}(?:,?[0-9]{3})*(?:\.[0-9]{2})?$数字:货币金额US和EU(可选的美分)可以使用美式123,456.78表示法和欧式123.456,78表示法。可选的千位分隔符;可选的两位数小数Match; JGsoft:^[+-]?[0-9]{1,3}(?:[0-9]*(?:[.,][0-9]{2})?|(?:,[0-9]{3})*(?:\.[0-9]{2})?|(?:\.[0-9]{3})*(?:,[0-9]{2})?)$

智慧大石

根本没有经过完全测试(我只是写了它!),但是表现正常:^-?(?:0|[1-9]\d{0,2}(?:,?\d{3})*)(?:\.\d+)?$测试集:01335554,656465699,785125,9447,994,16979941690.001.033.78795555.124,656.48999,785.01125,944.100-7,994,169-7994169.23 // Borderline...Wrong:000013,35.555,,65699,78,51,25,944--7,994,1690.0,0.1033.787,954.656.48999.785,011-125,944.1-7,994E169注意:您的System.Decimal依赖于语言环境,很难在正则表达式中创建,除非在构建时。我假设即使在某些文化(区域设置)中有不同的规则,数字也要按三组进行分组。在其周围添加空格很简单。
打开App,查看更多内容
随时随地看视频慕课网APP