【问题标题】:Regex group generates empty matches among wanted matches正则表达式组在想要的匹配中生成空匹配
【发布时间】:2014-12-27 05:25:36
【问题描述】:

我正在尝试学习正则表达式。我创建了这个/(\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]   ``

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

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

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

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

    或更好地使用单词边界

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

    RegEx Demo

    您的正则表达式给出了空匹配项,因为您的正则表达式 (\d?\.?\d?) 包含所有可选,即数字和小数点以及后面的数字。您还需要使用量词+ 使其匹配小数点任一侧的多个数字。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-01-13
        • 2013-12-23
        • 2017-12-20
        • 2013-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多