【问题标题】:regex get part of the link正则表达式获取链接的一部分
【发布时间】:2017-10-23 05:07:16
【问题描述】:
【问题讨论】:
标签:
javascript
regex
hyperlink
【解决方案1】:
这可能取决于 URL 格式,但此时:
var url = 'https://www.example.com/uk/This-Part-I-Need-To-Get/F1ST2/sometext/';
console.log(url.split('/')[4])
【解决方案2】:
试试这个正则表达式
/([A-Z][a-z]|-[A-Z]|-[A-Z][a-z]-|-[A-Z]-)\w+/g
这是一个片段
var url = 'https://www.example.com/uk/This-Part-I-Need-To-Get/F1ST2/sometext/';
console.log(url.match(/([A-Z][a-z]|-[A-Z]|-[A-Z][a-z]-|-[A-Z]-)\w+/g).join(''))
【解决方案3】:
正如@MichałSałaciński 所说,您应该考虑使用split 函数。
顺便说一句,如果你不想使用正则表达式,那么如果 url 格式没有改变,这个就可以了:[^\/]+(?=(?:\/\w+){2}\/)
Demo
var re = /[^\/]+(?=(?:\/\w+){2}\/)/
var url = "https://www.example.com/uk/This-Part-I-Need-To-Get/F1ST2/sometext/"
if(re.test(url)) {
// URL match regex pattern, we can safely get full match
var value = re.exec(url)[0];
console.log(value);
}
说明
[^\/]+ 除斜线以外的任何字符n 次
(?=...) 后跟
(?:\/\w+){2}\/ 一个斜线和任何单词字符(2 次)然后是一个斜线
解决方案 2
这个也可以使用捕获的组 1::\/\/[^\/]+\/[^\/]+\/([^\/]+)
Demo
var re = /:\/\/[^\/]+\/[^\/]+\/([^\/]+)/;
var url = "https://www.example.com/uk/This-Part-I-Need-To-Get/F1ST2/sometext/";
if(re.test(url)) {
// URL match regex pattern, we can safely get group 1 value
var value = re.exec(url)[1];
console.log(value );
}