我需要从字符串中获取最后一个 \
或者 /
后面的部分,例如这个字符串 C:\fake\path\some.jpg
,结果应该是 some.jpg
。
我尝试了以下方法:
var str = "C:\fake\path\some.jpg";
var newstr = str.replace(/[^\\\/]+$/, "");
alert(newstr);
但是它并不能工作,有没有正确的正则表达式?
我需要从字符串中获取最后一个 \
或者 /
后面的部分,例如这个字符串 C:\fake\path\some.jpg
,结果应该是 some.jpg
。
我尝试了以下方法:
var str = "C:\fake\path\some.jpg";
var newstr = str.replace(/[^\\\/]+$/, "");
alert(newstr);
但是它并不能工作,有没有正确的正则表达式?
您不需要使用正则表达式来完成,以下代码可以实现:
var newstr = str.substring(Math.max(str.lastIndexOf("\\"), str.lastIndexOf("/")) + 1);
/
。 - Travesty3你的 str 必须使用转义符 \\
才能正常工作。 而且,由于您使用的正则表达式匹配结尾而不是开头,因此您需要使用 match。
var str = "C:\\fake\\p\ath\some.jpg";
var newstr = str.match(/[^\\/]+$/);
alert(newstr);
var str = "C:\\fake\\path\\some.jpg";
var newstr = str.replace(/[^\\\/]+$/, "");
alert(newstr);
现在,您正在删除some.jpg
而不是将其作为结果获取。
以下是几种修复此问题的选项:
1.使用正则表达式进行替换
var newstr = str.replace(/.*[\\\/]/, "");
2.使用正则表达式进行字符串分割(不适用于所有浏览器)
var tmp = str.split(/\\|\//);
var newstr = tmp[tmp.length-1];
4.如此所述,匹配
var newstr = str.match(/.*[\\\/](.*)/)[1];
var str = "C:\\fake\\path\\some.jpg";
。 - epascarello