匹配倒数第二个和最后一个反斜杠字符之间的所有内容

时间:2016-12-14 05:22:39

标签: javascript regex

我想提取一个遵循相同模式的URL字符串:

http://www.website.com/abcd/efg/xyz/the_string_i_want/?Cr=47

我想只提取“the_string_i_want”

3 个答案:

答案 0 :(得分:4)



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]);




答案 1 :(得分: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还是regexp,通常解析URL都很麻烦且很脆弱。您应该使用正则表达式解析库。例如,此类库将处理诸如/\之类的问题作为路径分隔符,和/或规范化用于尾部斜杠的URL。

答案 2 :(得分:0)

试试这个正则表达式

http(?:s)?\:\/\/www\.\w+\.[\w]{2,}\/(?:(\w+)\/)+(?:\?\w+\=\w+)?

https://regex101.com/r/MtEwQ7/2