API 调用的 URL 正则表达式
URL Regex for a API call?
当您在文本框中输入 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");
上面对正则表达式的解释也应该对此示例有所帮助。
- 通过正则表达式从字符串中提取Url
- 用于确定URL视频ID的正则表达式
- url正则表达式不适用于javascript中的localhost
- JavaScript 中 URL 的正则表达式模式
- 什么'用这个正则表达式查找URL是错误的
- 修改以下正则表达式,使其在URL末尾包含斜杠
- javascript正则表达式url(url子字符串)
- url的正则表达式有问题
- 使用JavaScript正则表达式从html srcset获取图像url
- 与URL参数匹配的正则表达式
- 为什么正则表达式不能正确验证网站URL
- JavaScript正则表达式,带有URL激活以及微笑符号等
- 将背景图像URL与正则表达式匹配
- JavaScript 正则表达式以匹配 URL
- 通过 JavaScript 和正则表达式将图像 URL 替换为文本 URL
- 正则表达式 url 与本地主机匹配
- 需要进一步扩展此正则表达式 URL/邮件解析器
- javascript正则表达式url替换
- 不是图像扩展名的Javascript正则表达式url
- JS 正则表达式 url 验证