用于识别逗号和小数的货币数据的正则表达式

时间:2013-11-08 05:52:00

标签: regex nsregularexpression

需要货币后处理器用于所有货币金额。后处理器的逻辑应该处理以下情况:

14.978.00 -> 14,978.00 

14.97800 -> 14,978.00 

14,97800 -> 14,978.00 

逻辑如下:

  1. 如果数字格式正确(逗号位于正确的位置,最多只有一个小数点后面有2位数字) - 那么什么都不做。

  2. 否则,如果在逗号有意义的位置找到小数点,则将小数点更改为逗号 (如果小数点右边有3个或更多数字,则将十进制数改为逗号)

  3. 执行第2步后,任何以逗号结尾,后跟5位数(,nnnnn)的数字都应转换为,nnn.nn

1 个答案:

答案 0 :(得分:0)

s/\.(\d{3})/,$1/
匹配一个点后跟3个数字,用逗号替换,后跟相同的3个数字(已捕获)。

s/,(\d{3})(\d{2})$/,$1.$2/
匹配一个逗号,后跟5个数字(一组3和一组2)在字符串的末尾,用逗号替换它,前三个数字(已捕获),一个点和最后两个数字(被抓获)。