非贪婪正则表达式误解,/\/.*?$/ 表现得像贪婪

Non-greed regex misunderstanding, /\/.*?$/ act like greed

我正在 javascript

尝试这个
/\/.*?$/.exec('foo/bar/tar')[0]

我原本希望得到 /tar 结果却得到了 /bar/tar。据我了解,非贪婪正则表达式将采用最小匹配。

我用 myvar.split('/').reverse()[0] 规避了这个问题,但我不明白正则表达式出了什么问题。

正则表达式没有问题,但模式 \/.*?$ 匹配从第一个正斜杠到字符串结尾的非贪婪模式。

点匹配除换行符以外的任何字符,并且不考虑正斜杠,因此将导致 /bar/tar.

如果你想匹配 /tar,你可以匹配正斜杠,然后使用 negated character class 不再匹配正斜杠,然后断言字符串的结尾。

\/[^\/]+$

Pattern demo

console.log(/\/[^\/]+$/.exec('foo/bar/tar')[0]);