Toniq
Toniq

Reputation: 5016

Wistia extract video id from url

I am trying to extract video id using regex. Here are some video url examples:

http://fast.wistia.net/embed/iframe/26sk4lmiix
https://support.wistia.com/medias/26sk4lmiix

My regex:

var rx = /https?:\/\/(.+)?(wistia\.com|wi\.st)\/(medias|embed)\/*\/([^;\?]+)/,
_m = url.match(rx)
if(_m && _m[4])return _m[4]
else return false;

Regiex is not quite correct and is returning for exmaple:

iframe/26sk4lmiix

Upvotes: 2

Views: 322

Answers (3)

Wiktor Stribiżew
Wiktor Stribiżew

Reputation: 627536

If you want to keep your current group patterns intact, you may use

/https?:\/\/([^\/]+)?(wistia\.(?:com|net)|wi\.st)\/(medias|embed)(?:\/.*)?\/([^;?]+)/

The (.+)? is changed to ([^\/]+)? to make sure the first group value is only matching within the hostname part.

I changed (wistia\.com|wi\.st) to (wistia\.(?:com|net)|wi\.st) since you have such an example with wistia.net to match.

The (?:\/.*)? part makes sure you match anything before an expected value that is captured into Group 4.

Upvotes: -1

Dharam Budh
Dharam Budh

Reputation: 2372

Here is the code without using the regex pattern.

function getVideoId(url) {
  return url.split("/").pop();
}

const url1 = "http://fast.wistia.net/embed/iframe/26sk4lmiix";
console.log(getVideoId(url1));

const url2 = "https://support.wistia.com/medias/26sk4lmiix";
console.log(getVideoId(url2));

Output of url1: 26sk4lmiix

Output of url2: 26sk4lmiix

Upvotes: 0

Tim Biegeleisen
Tim Biegeleisen

Reputation: 522762

If you just want to extract the last portion of the URL path component via regex, then just match on the patttern [^/]+$:

var url = "http://fast.wistia.net/embed/iframe/26sk4lmiix";
var id = url.match(/[^/]+$/);
console.log(id);

You could also split the URL on forward slash, and retain the final component:

var url = "http://fast.wistia.net/embed/iframe/26sk4lmiix";
var parts = url.split("/");
console.log(parts[parts.length-1]);

Upvotes: 2

Related Questions