簡體   English   中英

如何使用可選的十進制分隔符解析雙精度

[英]How do I parse a double with optional decimal seperator

我想用單位解析數字

3cm
3.44 cm
12,33  mm

下面的表達式正是我想要的

(([0-9]*(?:[,.]?[0-9]*?))[\s]*(cm|mm))

但問題是它也可以匹配

cm 22.1   cm

在這種情況下,它會忽略數字並僅匹配第一個cm,我如何忽略第一個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)

DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM