4

我需要从字符串中获取,最后一个 \/,即从这个字符串 C:\fake\path\some.jpg结果必须是some.jpg

我试过这个:

var str = "C:\fake\path\some.jpg";
var newstr = str.replace(/[^\\\/]+$/, "");
alert(newstr);

http://jsfiddle.net/J4GdN/3/

但不起作用,什么是正确的正则表达式?

4

3 回答 3

11

您不需要正则表达式来执行此操作,这应该可以:

var newstr = str.substring(Math.max(str.lastIndexOf("\\"), str.lastIndexOf("/")) + 1);
于 2013-05-01T13:59:16.917 回答
5

那么你的 str 需要被转义\\才能正常工作。您还需要使用 match,因为您使用的 reg exp 匹配的是结尾,而不是开头。

var str = "C:\\fake\\p\ath\some.jpg";
var newstr = str.match(/[^\\/]+$/);
alert(newstr);

JSFiddle

于 2013-05-01T14:01:29.550 回答
1

首先,让我们避开反斜杠

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]; 
于 2013-05-01T14:36:22.543 回答