【发布时间】: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
谁能帮我理解为什么以下返回"$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
因为你的前瞻。当它前进到最后一个 0 时,前瞻匹配并且正则表达式失败。所以它必须回溯到第二个 0。看起来你可能想要:
"$123,000 word word".match(/^\$[\d,]+\b/)[0]
#=> "$123,000"
【讨论】:
John,如果您希望表达式仅返回“$123,000”,为什么还要使用否定的先行断言?此外,我认为您误解了否定前瞻的概念,该概念断言字符串中当前位置之前的内容不是空格(您的问题中的 \s),这意味着它将从空格之前的字符开始截断字符串。有关更多详细信息,您可以参考http://www.rexegg.com/regex-lookarounds.html 或者您可以在https://regex101.com/ 中测试和调试您的正则表达式,其中附带对您的正则表达式的一些解释。
【讨论】: