我在javascript中尝试这个
//.*?$/.exec('foo/bar/tar')[0]
我本以为会因此/tar
,但得到/bar/tar
.据我了解,非贪婪正则表达式将采用最小的匹配。
我正在用myvar.split('/').reverse()[0]
规避这一点,但我无法理解正则表达式出了什么问题。
正则表达式没有任何问题,但模式/.*?$
从第一个正斜杠到字符串末尾不贪婪匹配。
点匹配除换行符以外的任何字符,并且不考虑正斜杠,因此将导致/bar/tar
。
如果要匹配/tar
,则可以匹配正斜杠,然后使用否定字符类不再匹配正斜杠,然后断言字符串的末尾。
/[^/]+$
模式演示
console.log(//[^/]+$/.exec('foo/bar/tar')[0]);