使用Regex在URL中查找特定字符串

时间:2016-05-06 10:05:47

标签: javascript regex string match

我需要“正则表达式” - 在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之间的图片名称,并将其分配给变量。

4 个答案:

答案 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&li‌st=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.splitString.substrArray.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"