andrey andrey
andrey andrey

Reputation: 11

regex get part of the link

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

need to get "This-Part-I-Need-To-Get", with "-" symbols and capital letters at the wordstart. All I managed to do is "/([A-Z-])\w+/g", that returns

"This" "-Part" "-I" "-Need" "-To" "-Get" "F1ST2", but I don`t need "F1ST2". How should I do it?

Upvotes: 0

Views: 73

Answers (3)

Stephane Janicaud
Stephane Janicaud

Reputation: 3627

As @MichałSałaciński said, you should consider using split function.

BTW, if you wan't to use regular expressions, then this one will work if url format does not change : [^\/]+(?=(?:\/\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);
}

Explanation

[^\/]+ Any character but a slash n times

(?=...) Followed by

(?:\/\w+){2}\/ a slash and any word character (2 times) then a slash

Solution 2

This one also works using captured group 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 );
}

Upvotes: 0

Nadir Laskar
Nadir Laskar

Reputation: 4150

Try this regex

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

Here is a 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(''))

Upvotes: 0

Michał Sałaciński
Michał Sałaciński

Reputation: 2266

It might depend on URL format, but at this point:

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

Upvotes: 1

Related Questions