Regex组在所需匹配项中生成空匹配

时间:2014-12-27 05:25:36

标签: javascript regex

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

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

https://regex101.com/r/aJ3eF2/2

但是这种模式会在想要的匹配中产生空匹配。

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

我想明白为什么会这样?以及如何解决它。

2 个答案:

答案 0 :(得分:1)

您应该使用此正则表达式来解决此问题:

(\d+(?:\.\d+)?)

或更好地使用字词边界

(\b\d+(?:\.\d+)?\b)

RegEx Demo

你的正则表达式提供空匹配,因为你的正则表达式(\d?\.?\d?)包含所有可选,即数字和小数点后面的数字。您还需要使用量词+使其匹配小数点两边的多个数字。

(?:...)使其成为非捕获组。

答案 1 :(得分:1)

如果您不希望.001使用(\d+\.?\d+)

链接:https://regex101.com/r/pX7rL1/1