使用正则表达式从字符串中提取数字[多个格式选项]

时间:2018-01-29 10:54:17

标签: regex numbers

我正试图想出一个从不同格式的字符串中提取数字的正则表达式。例如:

'1', '1.1', '1,1', '1,000,000.20', '1.00000020', '1.000.000,20', '10.20001'

我目前正在使用正则表达式[-+]?[0-9]*[.,]?[0-9]+(?:[eE][-+]?[0-9]+)? 除了1,000,000.201.000.000,20之外,它在大多数情况下效果很好。

您是否知道我如何调整以前的正则表达式以使用这些示例?

1 个答案:

答案 0 :(得分:1)

(?!\d+,\d+\.\d+,|\d+\.\d+,\d+.)^([+-]?(?:\d+|\d{1,3}(?:[.,]\d{3})*)(?:[.,]\d+|[eE][+-]?(?:\d+|\d{1,3}(?:[.,]\d{3})*))?)$

也许是这样的?

这将匹配您说明的所有内容,以及以1e101e-9格式撰写的数字。

它也不会匹配逗号点格式不一致的数字,即10.234245,21410.234,245.21410,234.245,214

这些数字的开头也允许+-

Regex101

上查看