const url = "https://www.example.com/media/english/exaProns/p008-001600778.mp3?version=1.2.60"
const clearURL = new URL(url).pathname;
// get the core part of the url (removes the origin and the search params)
console.log(clearURL);
const fileName = clearURL.replace(/.*\//, "");
// remove everything before the last slash
console.log(fileName);
4条答案
按热度按时间8oomwypt1#
我建议使用
URL#pathname
安全地删除?
之后的所有额外部分,然后您可以使用regex删除最后一个/
之前的所有内容我没有使用一个大型正则表达式的原因是
1.这样更容易理解
1.如果url格式不正确并且路径名中包含另一个
?
,则更安全2ul0zpep2#
如果你想不费太多力气就能得到一致的结果,你可以使用
URL
constructor,然后让它提取pathname
。之后,只需将/
和pop拆分为最后一个:URL
构造函数只是为您提供了实际URL的更简单的分解,允许您以与浏览器相同的方式操作它。ar5n3qh53#
如果你的url的结构是相同的,并且只跟踪名称的变化,你可以使用这个
regex
模式:它提取最后
/
和?
之间的部分就像这样:
siv3szwd4#
在JavaScript中,您可以使用URL API来解析URL,然后提取路径名。这将给予你的路径部分的网址,它遵循域部分的第一个'?'或'#'字符。然后,您可以通过'/'分割路径名,并获取最后一个元素以获取文件名。
下面是一个例子:
在这段代码中:
1.我们首先从字符串a创建一个URL对象。这个对象允许我们轻松地提取URL的不同部分。
1.然后我们得到URL的路径名,这是从域到第一个'的URL的一部分?'或'#'字符。
1.接下来,我们使用'/'作为分隔符将此路径名拆分为各个部分。这给了我们一个字符串数组。
1.最后,我们从这个数组中获得最后一个元素,即文件名。