Javascript 正则表达式组在所需匹配项之间生成空匹配项

Javascript 正则表达式组在所需匹配项之间生成空匹配项,javascript,regex,Javascript,Regex,我在学正则表达式。我创建了这个/(\d?\.?\d?)/g,以提取以逗号分隔的浮点数列表中的所有数字。像这样: 1,2.2,3,4,5,6,7,8,9,10 但此模式在所需匹配中生成空匹配 MATCH 1 1. [0-1] `1` MATCH 2 1. [1-1] `` MATCH 3 1. [2-5] `2.2` MATCH 4 1. [5-5] `` 我想知道为什么会这样?以及如何修复它。您应该使用此正则表达式来修复此行为: (\d+(?:\.\d+)?) 或

我在学正则表达式。我创建了这个
/(\d?\.?\d?)/g
,以提取以逗号分隔的浮点数列表中的所有数字。像这样:

1,2.2,3,4,5,6,7,8,9,10

但此模式在所需匹配中生成空匹配

MATCH 1
1.  [0-1]   `1`
MATCH 2
1.  [1-1]   ``
MATCH 3
1.  [2-5]   `2.2`
MATCH 4
1.  [5-5]   ``

我想知道为什么会这样?以及如何修复它。

您应该使用此正则表达式来修复此行为:

(\d+(?:\.\d+)?)
或者更好地使用单词边界

(\b\d+(?:\.\d+)?\b)
您的正则表达式提供空匹配项,因为您的正则表达式
(\d?\.?\d?
具有所有可选项,即数字、小数点和数字。您还需要使用量词
+
,使其与小数点两侧的多个数字匹配


(?:…)
将其设置为非捕获组。

如果您不希望看到类似
.001
的内容,请使用
(\d+\.?\d+)

链接: