货币正则表达式 - 从计数限制中排除逗号
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}
)
$
- 字符串结尾。
我在我的应用程序中使用以下正则表达式:
^(([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}
)
$
- 字符串结尾。