2

任何有效的正则表达式来查找图片网址?

例子 :

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));

我并列但失败,这种reg 模式看起来像这样,我只想要图像 urlurl(" ")url( )

我只想得到像这样的输出http://domain.com/randompath/random4509324041123213.jpg

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

4

3 回答 3

1

试试这个正则表达式:

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

URL 在第一个子组中被捕获。

于 2013-03-14T14:23:34.067 回答
1

我会简单地使用这个表达式:

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

这将返回一个数组,其中第一个索引 (0) 包含整个匹配项,第二个将是 url 本身,如下所示:

'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];

如果使用单引号和双引号发生了变化,您可以简单地将 all 替换"'"or ['"],在这种情况下:

/url.*\(["']?([^"')]+)/
于 2013-03-14T14:28:34.830 回答
-1

如果字符串始终保持一致,则一种选择是简单地删除前 4 个字符url("和最后两个字符")

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);

这是一个工作小提琴

这种方法的好处:您可以自己编辑它,而无需让 StackOverflow 为您完成。RegEx很棒,但如果你不知道,在你的代码中添加它会导致令人沮丧的重构。

于 2013-03-14T14:25:51.003 回答