如何使用可选的小数分隔符解析双精度
本文关键字:分隔符 双精度 小数 何使用 | 更新日期: 2023-09-27 18:33:34
我想用这样的单位解析数字
3cm
3.44 cm
12,33 mm
以下表达式完全符合我的需求
(([0-9]*(?:[,.]?[0-9]*?))['s]*(cm|mm))
但问题是它也匹配类似的东西
cm 22.1 cm
在这种情况下,它忽略数字并仅匹配第一个厘米,如何忽略第一个厘米?
您可以将第一个数字匹配量词从零或多个 (*) 更新为一个或多个 (+):
(([0-9]+(?:[,.]?[0-9]*?))['s]*(cm|mm))
'd+(?:[.,]'d+)?'s*(?:cm|mm)
试试这个。请参阅演示。
https://regex101.com/r/qJ8qW5/2
就像其他人说的那样,您需要将量词*
更改为+
其中*
表示零或更多,+
表示一个或多个。如果您还想匹配像 12,533.45 cm
这样的数字,那么您可以使用下面的正则表达式。
[0-9]+(?:,[0-9]+)*(?:'.[0-9]+)?'s*(?:cm|mm)
演示