【问题标题】:Why does this regex return a shorter version of the expected?为什么这个正则表达式会返回预期的较短版本?
【发布时间】:2015-12-09 01:00:07
【问题描述】:

谁能帮我理解为什么以下返回"$123,00" 而不是"$123,000"

var string = "$123,000 word word";
string.match(/^\$[\d|,]+(?!\s)/g)

// "$123,00" not "$123,000"

希望能帮助它返回“123,000 美元”

【问题讨论】:

    标签: javascript regex negative-lookahead


    【解决方案1】:

    因为你的前瞻。当它前进到最后一个 0 时,前瞻匹配并且正则表达式失败。所以它必须回溯到第二个 0。看起来你可能想要:

    "$123,000 word word".match(/^\$[\d,]+\b/)[0]
    #=> "$123,000"
    

    【讨论】:

      【解决方案2】:

      John,如果您希望表达式仅返回“$123,000”,为什么还要使用否定的先行断言?此外,我认为您误解了否定前瞻的概念,该概念断言字符串中当前位置之前的内容不是空格(您的问题中的 \s),这意味着它将从空格之前的字符开始截断字符串。有关更多详细信息,您可以参考http://www.rexegg.com/regex-lookarounds.html 或者您可以在https://regex101.com/ 中测试和调试您的正则表达式,其中附带对您的正则表达式的一些解释。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-20
        • 1970-01-01
        • 2014-04-21
        • 1970-01-01
        • 2017-09-04
        • 2010-09-22
        相关资源
        最近更新 更多