首页 > 解决方案 > 货币正则表达式 - 从计数限制中排除逗号

问题描述

我在我的应用程序中使用以下正则表达式:

^(([0-9|(\\,)]{0,10})?)?(\\.[0-9]{0,2})?$

所以它允许小数点前10个字符和小数点后2个字符。但是我在输入时插入了一项将文本字段格式化为货币的附加功能。所以如果我有12345671,234,567在格式化之后。当我输入 10 个字符而不是 10 个数字时,正则表达式失败。理想情况下,正则表达式在计数 10 时应该忽略逗号。

我也试过这个,^(([0-9|(\\,)]{0,13})?)?(\\.[0-9]{0,2})?$但它似乎不是正确的方法。谁能帮我得到一个正确的正则表达式而不是使用这个调整。

标签: swiftregexnsregularexpression

解决方案


您可以使用

"^(?:,*[0-9]){0,10}(?:\.[0-9]{0,2})?$"

.或者,如果小数部分后面必须有一个数字,请使用

"^(?:,*[0-9]){0,10}(?:\.[0-9]{1,2})?$"

请参阅正则表达式演示。该(?:,*[0-9]){0,10}部分的作用是:它匹配任何 0+,字符,后跟单个数字 0 到 10 次。如果,还可以出现在之前.,添加,*之后((?:,*[0-9]){0,10})?

细节

  • ^- 字符串的开始
  • (?:,*[0-9]){0,10}- 0 到 10 次出现 0+ 逗号后跟一个数字
  • (?:\.[0-9]{0,2})?- 可选序列:
    • \.- 一段时间
    • [0-9]{0,2}.- 0 到 2 位数字(如果使用后必须有数字[0-9]{1,2}
  • $ - 字符串结束。

推荐阅读