swift - 货币正则表达式 - 从计数限制中排除逗号
问题描述
我在我的应用程序中使用以下正则表达式:
^(([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})?$"
请参阅正则表达式演示。该(?:,*[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}
)
$
- 字符串结束。
推荐阅读
- css - translateX 上的 css 过渡在高度变化时激活
- linux - If 语句 3 条件 Bash
- php - 解析网页时无法获取表单元素
- mysql - Mysql 到 XSLT 替换 \r\n
- docker - 如何从另一个容器访问在 Docker 容器中运行的 Mopidy
- php - laravel 4中有没有办法在飞行中创建自定义验证消息
- c - C的打开覆盖文件被打开和fdopen返回NULL
- python - Python Matplotlib 在点和单位圆上带有旋转的径向标签
- java - 创建 jar 与复制代码
- android - 什么可能导致已发布的 Android 应用程序自发停止为大量用户工作?