我正试图想出一个从不同格式的字符串中提取数字的正则表达式。例如:
'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.20
和1.000.000,20
之外,它在大多数情况下效果很好。
您是否知道我如何调整以前的正则表达式以使用这些示例?
答案 0 :(得分:1)
(?!\d+,\d+\.\d+,|\d+\.\d+,\d+.)^([+-]?(?:\d+|\d{1,3}(?:[.,]\d{3})*)(?:[.,]\d+|[eE][+-]?(?:\d+|\d{1,3}(?:[.,]\d{3})*))?)$
也许是这样的?
这将匹配您说明的所有内容,以及以1e10
和1e-9
格式撰写的数字。
它也不会匹配逗号点格式不一致的数字,即10.234245,214
,10.234,245.214
或10,234.245,214
这些数字的开头也允许+
或-