我在我的应用程序中使用以下正则表达式:
^(([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 :(得分: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}
)$
-字符串的结尾。