【发布时间】:2016-12-14 05:22:39
【问题描述】:
我想提取一个遵循相同模式的 URL 字符串:
http://www.website.com/abcd/efg/xyz/the_string_i_want/?Cr=47
我只想提取“the_string_i_want”
【问题讨论】:
标签: javascript regex
我想提取一个遵循相同模式的 URL 字符串:
http://www.website.com/abcd/efg/xyz/the_string_i_want/?Cr=47
我只想提取“the_string_i_want”
【问题讨论】:
标签: javascript regex
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+)?
【讨论】: