正则表达式获取链接的一部分

时间:2017-05-23 09:56:26

标签: javascript regex hyperlink

https://www.example.com/uk/This-Part-I-Need-To-Get/F1ST2/sometext/

需要得到"这部分 - 我需要获得",与" - "在wordstart的符号和大写字母。 我设法做的就是" /([A-Z - ])\ w + / g",返回

"这" " -Part" " -I" " - 需要" " -To" " - 获得" " F1ST2",但我不需要" F1ST2"。 我该怎么办?

3 个答案:

答案 0 :(得分:1)

可能取决于网址格式,但此时:

var url = 'https://www.example.com/uk/This-Part-I-Need-To-Get/F1ST2/sometext/';
console.log(url.split('/')[4])

答案 1 :(得分:0)

正如@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 );
}

答案 2 :(得分:0)

试试这个正则表达式

/([A-Z][a-z]|-[A-Z]|-[A-Z][a-z]-|-[A-Z]-)\w+/g

这是 SNIPPET

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(''))