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+)
链接: