货币正则表达式 - 从计数限制中排除逗号

Regex for currency - Exclude commas from the count limit

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

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

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

我也试过这个 ^(([0-9|(\,)]{0,13})?)?(\.[0-9]{0,2})?$ 但它似乎不是正确的方法。 任何人都可以帮助我获得正确的正则表达式而不是使用此调整。

您可以使用

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

或者,如果在小数部分 . 之后必须有一个数字,则使用

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

regex demo(?:,*[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}
  • $ - 字符串结尾。