匹配文件名

时间:2010-12-23 09:50:27

标签: javascript regex match

需要从特定文件夹中的链接标记获取css文件名。

<link href="/assets/49f0ugdf8g/sub/style.css"   -> style.css

目前有

match(`<link .*?href="\/assets\/(.*?\.css)"/i)

返回路径减去“/ assets /” 是否可以扩展以删除路径的其余部分并返回文件名。

5 个答案:

答案 0 :(得分:3)

不使用正则表达式并使用原生JS String.split函数会更简单:

var link = document.getElementsByTagName('link')[0]; // or whatever JS to get your link element
var filename = link.href.split('/').pop(); // split the string by the / character and get the last part

答案 1 :(得分:0)

不确定

match(<link .*?href="\/assets\/([^/]+\.css)"/i)
//                              ^^^^^ change here

我放弃了?,因为您可能希望捕获组变得贪婪。在假设“文件”名称中始终至少有一个字符时,也使用+而不是*

答案 2 :(得分:0)

首先,be warned

试试这个:"\/assets\/(?:[^\/">]+\/)*([^\/">]*?.css)"

(?:...)是非捕获组。

答案 3 :(得分:0)

尝试:

match(`<link .*?href="\/assets\/(?:[^\/]*\/)*(.*?\.css)"/i)

答案 4 :(得分:0)

var link = '<link href="/assets/49f0ugdf8g/sub/style.css">';
var match = link.match(/<link .*?href="(.*)">/i);
var filename = match[1].split('/').pop();