API 调用的 URL 正则表达式

URL Regex for a API call?

本文关键字:正则表达式 URL 调用 API      更新时间:2023-09-26

当您在文本框中输入 URL 时,我正在尝试这样做,它将取出我需要添加到 JSON 响应的 HTTP 请求中的 URL 的重要部分,但问题是我不确定可以做到这一点的正则表达式代码。

JSON 频率 URL 如下所示

http://api.soundcloud.com/tracks/fourfiveseconds-brynny-quicky-bootleg-read-description.json?client_id=

曲目的 URL 如下所示

https://soundcloud.com/dj-brynny/fourfiveseconds-brynny-quicky-bootleg-read-description

然后我希望正则表达式能做的是获取最后一个/之后的最后一个字符串并返回它,以便我可以将其添加到 JSON 请求中。

你可以在没有正则表达式的情况下做到这一点。只需使用lastIndexOf:

var str = "https://soundcloud.com/dj-brynny/fourfiveseconds-brynny-quicky-bootleg-read-description";
str = str.substring( str.lastIndexOf("/")+1 );

您也可以使用 url.split('/').pop() 并像这样设置您的函数:

function convertURL(url){
    return 'http://api.soundcloud.com/tracks/'+ url.split('/').pop() +'.json?client_id=';
}

document.getElementById('convert').addEventListener('click', displayNewURL, false);
displayNewURL();
function displayNewURL(){
    var originalURL = document.getElementById('input').value;
    document.getElementById('result').value = convertURL(originalURL);
}
function convertURL(url){
    return 'http://api.soundcloud.com/tracks/'+ url.split('/').pop() +'.json?client_id=';
}
body{
    font-family: Arial, Helvetica, sans-serif;
}
p{
    margin: 0;
}
textarea{
    width: 90%;
    height: 3rem;
}
<p>Input:</p>
<textarea id="input">https://soundcloud.com/dj-brynny/fourfiveseconds-brynny-quicky-bootleg-read-description</textarea>
<button id="convert">Convert</button>
<p>Result :</p>
<textarea id="result"></textarea>

以下是具有正则表达式和捕获组的解决方案:

var url = "http://api.soundcloud.com/tracks/fourfiveseconds-brynny-quicky-bootleg-read-description.json?client_id=";
var output = url.replace(/(http)(:'/'/)api'.(soundcloud'.com'/)tracks('/[^'s]+)'.json'?[^'s]+/, ("$1s$2$3dj-brynny$4"));

解释:

我们创建捕获组,(http)是第一个(1 美元),它与"http"匹配。

比我们将"://"与第二组($2)匹配:'/'/。反斜杠正在转义正斜杠。

之后是"api.",我们不需要它。点也按反斜杠转义。

第三组(3美元)是soundcloud'.com'/。再次转义点和反斜杠以匹配"soundcloud.com"。

"轨道"不必被捕获,我们进入第四组(4 美元),'/[^'s]+它匹配正斜杠和任何非空格字符一次或多次。方括号中的符号"^"表示否定,"''s"表示任何空格字符。因此,它否定了空格字符。"+"唱歌表示搜索模式至少出现一次(因此一次或多次)。

最后,我们得到了'.json'?[^'s]+它必须匹配".json?",然后至少在非空格字符上。

在输出中,我们将它们组合在一起,在"http"之后添加字母"s",并将"dj-brynny"放在"tracks"所在的位置。最终"dj-brynny"是一个变量,在这种情况下,你可以创建一个函数,将该变量作为参数。

我希望这有所帮助。

编辑:

现在我看到我的帖子没有回答你的问题。我有一个错误的假设,没有读你的最后一行。

以下是适合您问题的更正:

var url = "https://soundcloud.com/dj-brynny/fourfiveseconds-brynny-quicky-bootleg-read-description";
var output = url.replace(/https:'/'/soundcloud'.com'/[^'s]+'/([^'s]+)/, "$1");

上面对正则表达式的解释也应该对此示例有所帮助。