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



我在javascript中尝试这个

//.*?$/.exec('foo/bar/tar')[0]

我本以为会因此/tar,但得到/bar/tar.据我了解,非贪婪正则表达式将采用最小的匹配。

我正在用myvar.split('/').reverse()[0]规避这一点,但我无法理解正则表达式出了什么问题。

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

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

如果要匹配/tar,则可以匹配正斜杠,然后使用否定字符类不再匹配正斜杠,然后断言字符串的末尾。

/[^/]+$

模式演示

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

最新更新