Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式在tampermonkey中自动下载mp3_Javascript_Regex_Tampermonkey - Fatal编程技术网

Javascript 使用正则表达式在tampermonkey中自动下载mp3

Javascript 使用正则表达式在tampermonkey中自动下载mp3,javascript,regex,tampermonkey,Javascript,Regex,Tampermonkey,我想在使用Tampermonkey和regex访问特定网站时自动下载mp3问题是,当我使用regex时,它无法下载mp3,但当我在“var arg”中使用正常URL时,它会自动下载mp3。我想在访问网站时自动下载mp3,并以与网站上的文件名相同的原始文件名保存mp3 下面是示例url:http://188.138.xx.xxx/mp3/12/45/song_mp3_6612.mp3 这是我的javascript示例 // ==UserScript== // @name New U

我想在使用Tampermonkey和regex访问特定网站时自动下载mp3问题是,当我使用regex时,它无法下载mp3,但当我在“var arg”中使用正常URL时,它会自动下载mp3。我想在访问网站时自动下载mp3,并以与网站上的文件名相同的原始文件名保存mp3

下面是示例url:
http://188.138.xx.xxx/mp3/12/45/song_mp3_6612.mp3

这是我的javascript示例

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @include      http://*/mp3*
// @grant        GM_download
// ==/UserScript==

var regex = /^(http:\/\/)(.*)(\/mp3\/.*\/)(.*)$/i;
var arg = { url: regex,
            name: "get the filename from orignal filename in regex.mp3"
          };

GM_download(arg);
当我使用direct和不使用regex时,它会起作用

// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @include      http://*/mp3*
// @grant        GM_download
// ==/UserScript==

var arg = { url: "http://188.138.xx.xxx/mp3/12/45/song_mp3_6612.mp3",
            name: "song.mp3"
          };

GM_download(arg);
这里是另一个示例链接 下面是另一个链接示例:

我尝试了那些正则表达式,但在tampermonkey中找不到相同的正则表达式

/==UserScript==
//@name新用户脚本
//@名称空间http://tampermonkey.net/
//@version 0.1
//@description尝试接管世界!
//@author You
//@include http://*/mp3*
//@grant gmu下载
//==/UserScript==
var regex=/(\bhttps?:\/\/(?:\d+\.?){4}\/mp3(?:\/[a-z0-9]+)\/[a-z0-9]+\/[\w+-]+?\.mp3\b)/;
var arg={url:regex,
名称:“filename.mp3”
};

GM_下载(arg)首先,我要走非贪婪路线。您希望消耗尽可能少的量。您还应该特别查找要捕获的字符串末尾的文件扩展名
.mp3

然后我的下一个观察是众多的捕获组-您只需要一个捕获组就可以获得整个URL

(https?:\/\/.*?\/mp3\/.*?\/.*?\.mp3)

我最后的观察是,您正在使用字符串锚定
^
$
。在您的输入字符串中,如果您要查找的url已经紧跟在字符串开头之后,紧跟在字符串结尾之前,那么您就不需要regex了

如果您的URL始终与您提供的格式相同,那么您甚至可以进一步改进:

(\bhttps?:\/\/(?:\d+\.?){4}\/mp3(?:\/\d+){2}\/[\w+-]+?\.mp3\b)

这将确保所有子文件夹都位于文件夹
\mp3\
下,您可以看到。

我想我们需要查看
GM_download()
的代码。它可以在不使用regex的情况下工作,但使用regex时不起作用。我想我的正则表达式有问题。谢谢@TimBiegeleisen,
GM_下载
是Tampermonkey提供的内置功能。但是这个问题确实需要一个合适的MCVE.djsoad,您需要链接到实际页面或显示包含mp3的HTML结构。您可以使用HTML结构,然后使用一些正则表达式来获得正确的URL。谢谢,我会尝试,文件名会根据歌曲标题而有所不同,例如“