l2aelba
l2aelba

Reputation: 22167

Finding image url via using Regex

Any working Regex to find image url ?

Example :

var reg = /^url\(|url\(".*"\)|\)$/;

var string = 'url("http://domain.com/randompath/random4509324041123213.jpg")';

var string2 = 'url(http://domain.com/randompath/random4509324041123213.jpg)';


console.log(string.match(reg));
console.log(string2.match(reg));

I tied but fail with this reg pattern will look like this, I just want image url between url(" ") or url( )

I just want to get output like http://domain.com/randompath/random4509324041123213.jpg

http://jsbin.com/ahewaq/1/edit

Upvotes: 2

Views: 760

Answers (3)

James Hill
James Hill

Reputation: 61792

If the string will always be consistent, one option would be simply to remove the first 4 characters url(" and the last two "):

var string = 'url("http://domain.com/randompath/random4509324041123213.jpg")';

// Remove last two characters
string = string.substr(0, string.length - 2);

// Remove first five characters
string = string.substr(5, string.length);

Here's a working fiddle.

Benefit of this approach: You can edit it yourself, without asking StackOverflow to do it for you. RegEx is great, but if you don't know it, peppering your code with it makes for a frustrating refactor.

Upvotes: -1

speakr
speakr

Reputation: 4209

Try this regexp:

var regex = /\burl\(\"?(.*?)\"?\)/;
var match = regex.exec(string);
console.log(match[1]);

The URL is captured in the first subgroup.

Upvotes: 1

Elias Van Ootegem
Elias Van Ootegem

Reputation: 76405

I'd simply use this expression:

/url.*\("?([^")]+)/

This returns an array, where the first index (0) contains the entire match, the second will be the url itself, like so:

'url("http://domain.com/randompath/random4509324041123213.jpg")'.match(/url.*\("?([^")]+)/)[1];
//returns "http://domain.com/randompath/random4509324041123213.jpg"
//or without the quotes, same return, same expression
'url(http://domain.com/randompath/random4509324041123213.jpg)'.match(/url.*\("?([^")]+)/)[1];

If there is a change that single and double quotes are used, you can simply replace all " by either '" or ['"], in this case:

/url.*\(["']?([^"')]+)/

Upvotes: 1

Related Questions