为什么此正则表达式 return 是预期的较短版本?
Why does this regex return a shorter version of the expected?
谁能帮我理解为什么下面的 return 是 "3,00"
而不是 "3,000"
?
var string = "3,000 word word";
string.match(/^$[\d|,]+(?!\s)/g)
// "3,00" not "3,000"
希望得到帮助 return "$123,000"
因为你的前瞻性。当它前进到最后一个 0 时,先行匹配并且正则表达式失败。所以它必须回溯到第二个0。看起来你可能想要:
"3,000 word word".match(/^$[\d,]+\b/)[0]
#=> "3,000"
John,如果您希望表达式 return 仅为“$123,000”,为什么要使用否定先行断言?此外,我认为您误解了负前瞻的概念,它断言紧接在字符串中当前位置之前的内容不是 space (\s 来自您的问题),这意味着它将从一个字符开始截断字符串在 space 之前。有关更多详细信息,您可以参考 http://www.rexegg.com/regex-lookarounds.html or you could test and debug your regex in https://regex101.com/ ,其中对您的正则表达式进行了一些解释。
谁能帮我理解为什么下面的 return 是 "3,00"
而不是 "3,000"
?
var string = "3,000 word word";
string.match(/^$[\d|,]+(?!\s)/g)
// "3,00" not "3,000"
希望得到帮助 return "$123,000"
因为你的前瞻性。当它前进到最后一个 0 时,先行匹配并且正则表达式失败。所以它必须回溯到第二个0。看起来你可能想要:
"3,000 word word".match(/^$[\d,]+\b/)[0]
#=> "3,000"
John,如果您希望表达式 return 仅为“$123,000”,为什么要使用否定先行断言?此外,我认为您误解了负前瞻的概念,它断言紧接在字符串中当前位置之前的内容不是 space (\s 来自您的问题),这意味着它将从一个字符开始截断字符串在 space 之前。有关更多详细信息,您可以参考 http://www.rexegg.com/regex-lookarounds.html or you could test and debug your regex in https://regex101.com/ ,其中对您的正则表达式进行了一些解释。