我想提取遵循同一模式的URL的字符串:匹配一切
http://www.website.com/abcd/efg/xyz/the_string_i_want/?Cr=47
我想只提取“the_string_i_want”
我想提取遵循同一模式的URL的字符串:匹配一切
http://www.website.com/abcd/efg/xyz/the_string_i_want/?Cr=47
我想只提取“the_string_i_want”
var a="http://www.website.com/abcd/efg/xyz/the_string_i_want/?Cr=47";
var b=a.split("/");
console.log(b[b.length-2]);
分割上斜线的字符串,返回下一个到最后一段:
const url = 'http://www.website.com/abcd/efg/xyz/the_string_i_want/?Cr=47';
const segs = url.pathname.split('/');
console.log(segs[segs.length - 2]);
如果您要使用正规,创建一个与一个斜杠开始某种原因,采取其他非斜杠字符([^\/]]
)到另一个斜杠(并捕获它们(()
)),然后更多的非 - 直到字符串末尾的字符($
)。
var str = 'http://www.website.com/abcd/efg/xyz/the_string_i_want/?Cr=47';
console.log(str.match(/\/([^\/]*)\/[^\/]*$/)[1]);
// ^^ START WITH SLASH
// ^^^^^^^^ CAPTURE THE PART YOU WANT
// ^^ ANOTHER SLASH
// ^^^^^^ MORE NON-SLASHES
// ^ END OF STRING
然而,无论你使用split
或正则表达式,一般解析URL是麻烦和脆弱。您应该使用正则表达式解析库。例如,这样的库将处理诸如/
与\
之类的问题作为路径分隔符,并且/或者规范URL的尾部斜线。
试试这个正则表达式
http(?:s)?\:\/\/www\.\w+\.[\w]{2,}\/(?:(\w+)\/)+(?:\?\w+\=\w+)?