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

时间:2019-01-09 09:11:50

标签: swift regex nsregularexpression

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

^(([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})?$,但这似乎不是正确的方法。 谁能帮助我获得正确的正则表达式,而不要使用此调整。

1 个答案:

答案 0 :(得分:1)

您可以使用

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