带逗号的双值的正则表达式

sku*_*mar 4 java regex

我有以下正则表达式来验证双精度值。这不接受逗号。有人可以帮我吗?

^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$
Run Code Online (Sandbox Code Playgroud)

新的正则表达式应该接受这些值
1000
1,000
1000000.01
1,000,000.00
1.4E-45
3.4028235E38

Bet*_*ane 5

^[-+]?[0-9]+(,[0-9]{3})*(\.[0-9]+)?([eE][-+]?[0-9]+)?
Run Code Online (Sandbox Code Playgroud)

这是一个简单的修复 - 只需添加 0 个或多个可选逗号块,后跟 3 个数字。

我还更改了可选小数后的块,以确保小数后至少跟一个数字。(所以你不匹配 52。)

  • `(,?[0-9]+)*` 可能应该是 `(,[0-9]{3})*` - 注意逗号前缺少 `?`(它的可选性将由 `)*` 处理部分),我们不想在这里让它成为可选的,因为它可能会导致回溯问题(不是说灾难性的)。 (3认同)