I want to extract the first valid URL in a string, which can be anywhere between characters and whitespace
I have tried with the following
...
urlRegex: /^(http[s]?:\/\/.*?\/[a-zA-Z-_]+.*)$/,
...
var input = event.target.value // <--- some string;
var url = input.match(this.urlRegex);
Problem is url returns the whole string when it finds a url, instead of returning just the part of the string matching the regex
Example The string
https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd
returns
["https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd", "https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd", index: 0, input: "https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd"]
How can this be achieved?
Your regex is incorrect.
Correct regex for extracting URl : /(https?:\/\/[^ ]*)/
Check out this fiddle.
Here is the snippet.
var urlRegex = /(https?:\/\/[^ ]*)/;
var input = "https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd";
var url = input.match(urlRegex)[1];
alert(url);
Live Demo with regex explanation on left side.
Regex explanation
var regex = /^(https?:\/\/[^/]+(\/[\w-]+)+)/;
var str = 'https://medium.com/aspen-ideas/there-s-no-blueprint-26f6a2fbb99c random stuff sd';
var url = str.match(regex)[0];
document.write(url);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With