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

Javascript 正则表达式与URL末尾的文件名匹配,javascript,regex,Javascript,Regex,有以下案文: http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg 还有其他类似的文本,其中最后一个1可以是任何其他数字,最后一个44也可以是任何其他数字,我需要一个匹配/1t44.jpg的正则表达式 到目前为止我所尝试的一切(/.+?\([^\.]+)$)都与第一个斜杠(//img.oo.com.au/prod/CRWWBGFWG/1t44.jpg)匹配 我使用的是JavaScript,所以任何可以使用的都应该使用。如果您想将文件名与非常特定的文件扩展名匹

有以下案文:

http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg
还有其他类似的文本,其中最后一个
1
可以是任何其他数字,最后一个
44
也可以是任何其他数字,我需要一个匹配
/1t44.jpg
的正则表达式

到目前为止我所尝试的一切(
/.+?\([^\.]+)$
)都与第一个斜杠(
//img.oo.com.au/prod/CRWWBGFWG/1t44.jpg
)匹配


我使用的是JavaScript,所以任何可以使用的都应该使用。

如果您想将文件名与非常特定的文件扩展名匹配,可以使用如下内容:

/\/\dt\d\d\.jpg$/
这符合:

  • 斜线
  • 后跟一个数字
  • 后面跟着字母“t”
  • 后跟两位数
  • 后跟字符串末尾的“.jpg”
或者,如果您真的只需要文件名(无论最后一个斜杠后面有什么文件扩展名),那么您可以使用:

/\/[^\/]+$/
这符合:

  • 斜线
  • 后跟一个或多个非斜杠字符
  • 最后
http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg
,两者都将匹配
/1t44.jpg
。第一个文件显然要严格得多,因为它需要文件名的特定格式。第二个匹配任何文件名


其他选择。在node.js开发中,您可以使用和
path.parse()
将路径分解为其所有不同的组件


而且,为浏览器编写的各种库也会将路径分解为其组件。

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

/[^/]*$

当然,您不必使用正则表达式,并且:

var str=”http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg";
var parts=str.split(“/”);
document.write(parts.pop()+“
”);
正如约翰西韦布所说,这里真的不需要普通快车。AFAIK最快的方法是使用
lastIndexOf
substr

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

这是针对Linux机器上的Java的。它获取文件路径的最后一部分,以便可以使用它来进行文件锁定

//要扫描以查找模式的字符串。
字符串模式=“.*?([^/]+)*$”;
//创建模式对象
Pattern r=Pattern.compile(Pattern);
//现在创建匹配器对象。
Matcher match=r.Matcher(“/usr/local/java/bin/keystore”);
/**
*现在你有两场比赛
*#0/usr/local/java/bin/keystore
*#1密钥库
*/
字符串fileLock=“”;
if(match.find()){
fileLock=match.group(1)+“.lock”;
}

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

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

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

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

您是在尝试匹配路径末尾的任何文件名(因为您的正则表达式正试图这样做)还是遵循“XtXX.jpg”模式的文件名?@Dmitry:我真的在尝试找到通常与末尾的文件名匹配的正则表达式。是的,最后一件事是我真正想要的。另一个有效,但最后一个我可以从中学习:)@jfriend00不是“匹配角色最后一次出现的正则表达式”的答案。@RamtinSoltani-事实证明,这并不是OP想要的。OP希望匹配URL末尾的文件名,从最后一个/开始,我在第二个答案中提供了这一点。如果你按照OP在评论中所说的去做,很明显这是他们想要的完整解决方案。如果他们的标题不是完美的描述,或者如果你认为你会得到一个完全基于他们标题的答案,我也无能为力。这里的事情不是这样的。我们经常需要与OP对话,找出他们真正需要的是什么,这就是我们在这里所做的。@RamtinSoltani-哦,没有正则表达式只匹配字符的最后一次出现。您可以匹配从某个字符开始到结尾的字符,该字符没有其他出现(这意味着您在最后一次出现时隐式开始),这就是我提供的,也是OP需要的。天哪,真不敢相信你竟然否决了为OP提供他们想要的答案。阅读OP对我的回答和他们自己的问题的评论。是的,但当一切都解决了,你应该调整问题,否则会让人困惑。这个问题将出现在基于标题的搜索引擎中(我就是这样发现的),而答案(即使它是正确的)与原始问题无关。既然你是stackoverflow专业人士,为什么不通过编辑来调整问题,以避免混淆其他人?
str.substr(str.lastIndexOf('/'));
var url = "http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg";

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

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