正则表达式匹配URL末尾的文件名

时间:2011-11-08 01:59:20

标签: javascript regex

有了这个文字:

http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg

这样的其他文本,其中最后1可以是任何其他数字,最后44也可以是任何其他数字,我需要一个匹配/1t44.jpg的正则表达式。到目前为止我尝试过的所有内容(/.+?\.([^\.]+)$)都匹配第一个斜杠(//img.oo.com.au/prod/CRWWBGFWG/1t44.jpg)。

我正在使用javascript,因此RegexPal上的任何工作都应该这样做。

提前致谢。

6 个答案:

答案 0 :(得分:46)

这是一个简单的正则表达式,它将匹配最后/之后的所有内容:

/[^/]*$

答案 1 :(得分:28)

如果要将文件名与特定文件扩展名匹配,可以使用以下内容:

/\/\dt\d\d\.jpg$/

匹配:

a slash
followed by a digit
followed by the letter 't'
followed by two digits
followed by '.jpg' at the end of the string

或者,如果你真的只想要文件名(无论是在带有任何文件扩展名的最后一个斜杠之后),那么你可以使用它:

/\/[^\/]+$/

匹配:

a slash
followed by one or more non-slash characters
at the end of the string

http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg的示例字符串中,这两个字符串都匹配/1t44.jpg。第一个显然更具限制性,因为它需要特定的文件名格式。第二个匹配任何文件名。


其他选择。在node.js开发中,您可以使用path module并使用path.parse()来打破其所有各种组件的路径。

并且,为浏览器编写了各种库,这些库也将分解其组件的路径。

答案 2 :(得分:9)

正如Johnsyweb所说,这里并不需要定期快递。 AFAIK执行此操作的最快方法是使用lastIndexOfsubstr

str.substr(str.lastIndexOf('/'));

答案 3 :(得分:3)

当然,您不必使用正则表达式to split a stringpop the last part

var str="http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg";
var parts = str.split("/");
document.write(parts.pop() + "<br />");

答案 4 :(得分:0)

这是针对linux机器上的java。它抓取文件路径的最后一部分,以便它可用于进行文件锁定。

// String to be scanned to find the pattern.
String pattern = ".*?([^/.]+)*$";

// Create a Pattern object
Pattern r = Pattern.compile(pattern);

// Now create matcher object.
Matcher match = r.matcher("/usr/local/java/bin/keystore");

/**
* Now you have two matches
* #0    /usr/local/java/bin/keystore
* #1    keystore
*/

String fileLock = "";

if (match.find()) {
    fileLock = match.group(1) + ".lock";
}

我知道,与原来的问题有点不同。但我希望这能帮助那些遇到同样问题的人。

分享并享受。

答案 5 :(得分:0)

根据Scott的回答,试试这个:(JavaScript)

var url = "http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg";

var path           = url.replace(/(.*)([\\\/][^\\\/]*$)/, "$1" );

var lastElement    = url.replace(/(.*)([\\\/][^\\\/]*$)/, "$2" );

这也可以匹配Windows / Nix文件路径,以提取文件名或文件路径:

c:\Program Files\test.js => c:\Program Files

c:\Program Files\test.js => \test.js