Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 货币的正则表达式-从计数限制中排除逗号_Swift_Regex_Nsregularexpression - Fatal编程技术网

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

Swift 货币的正则表达式-从计数限制中排除逗号,swift,regex,nsregularexpression,Swift,Regex,Nsregularexpression,我正在我的应用程序中使用以下正则表达式: ^([0-9 |(\\,)]{0,10})?(\\[0-9]{0,2})?$ 因此,它允许小数点前10个字符,小数点后2个字符。 但我插入了一个额外的功能,即在键入时将文本字段格式化为货币。因此,如果我有1234567,它在格式化后变成1234567。当我输入10个字符而不是10个数字时,正则表达式失败。理想情况下,正则表达式应该在计算10时忽略逗号 我也尝试过这个^([0-9 |(\\,)]{0,13})?(\\.[0-9]{0,2})$,但它似乎不是

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

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

因此,它允许小数点前10个字符,小数点后2个字符。 但我插入了一个额外的功能,即在键入时将文本字段格式化为货币。因此,如果我有
1234567
,它在格式化后变成
1234567
。当我输入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})?$"
看。
(?:,*[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}
  • $
    -字符串结束

您的意思是要在整数部分允许任何数量的逗号吗?类似于
“^((?:,*[0-9]){0,10}”)(?:\\.[0-9]{0,2})?$”
?请检查它。@WiktorStribiżew谢谢你,它就像一个符咒!这正是我在寻找的话题,但货币汇率只允许2位小数是非常有限的,根据货币的表示方式,您可能会得到显示为0.00的汇率,即ABC/DEF vs DEF/ABCT谢谢您的详细描述