我需要“正则表达式” - 在JavaScript中 - 一个字符串,如:
http://some.domain.com/v/v1.0-4/19232_102032_21111986_n.jpg?param=fejrlwfje&list=fklwefljfre
我需要提取19232_102032_21111986_n
,即http://some.domain.com/v/v1.0-4/
和.jpg?param=fejrlwfje&list=fklwefljfre
之间的图片名称,并将其分配给变量。
答案 0 :(得分:1)
您可以使用
\/([^\/?]+)\.jpg(?:\?|$)
请参阅regex demo
模式说明:
\/
- 斜线([^\/?]+)
- 第1组(文件名)与/
和?
以外的一个或多个字符匹配\.jpg
- 文字.jpg
(?:\?|$)
- 与?
或字符串结尾匹配的非捕获组。
var s = 'http://some.domain.com/v/v1.0-4/19232_102032_21111986_n.jpg?param=fejrlwfje&list=fklwefljfre';
var m = s.match(/\/([^\/?]+)\.jpg(?:\?|$)/);
document.body.innerHTML = m ? m[1] : "No match!";
答案 1 :(得分:0)
试试这个:
var s = "http://some.domain.com/v/v1.0-4/19232_102032_21111986_n.jpg?param=fejrlwfje&list=fklwefljfre"
var result = /\/([a-z_0-9]+)\.jpg/.exec(s)[1];
答案 2 :(得分:0)
假设没有'?'在您想要匹配的字符串中,您可以尝试:
/\/([^?/]*)(\?|$)/.exec("http://some.domain.com/v/v1.0-4/19232_102032_21111986_n.jpg?param=fejrlwfje&list=fklwefljfre")[1].slice(0,-4)
这将匹配最后一个' /'之后的所有字符,这些字符不是' /'或'?'之前'?'或者字符串的结尾。
切片调用用于删除' .jpg'一部分。
答案 3 :(得分:0)
作为替代方案,可以使用String.split
,String.substr
和Array.lastIndexOf
函数在没有正则表达式的情况下实现:
var url = "http://some.domain.com/v/v1.0-4/19232_102032_21111986_n.jpg?param=fejrlwfje&list=fklwefljfre",
url_part = url.split("?")[0],
img_file = url_part.substr(url_part.lastIndexOf("/")+1).split(".")[0];
console.log(img_file); // "19232_102032_21111986_n"