2

画像のURLを見つけるための正規表現はありますか?

例 :

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 のようになります。url(" ")またはの間の画像URLが必要です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) には一致全体が含まれ、2 番目のインデックスは次のように 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];

一重引用符と二重引用符が使用されているという変更がある場合は、単純にすべて"をまたはのいずれ'"['"]に置き換えることができます。この場合は次のようになります。

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

文字列が常に一貫している場合、1 つのオプションは単純に最初の 4 文字url("と最後の 2文字を削除すること")です。

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 は素晴らしいものですが、それを知らない場合、コードに RegEx を追加すると、イライラするリファクタリングが発生します。

于 2013-03-14T14:25:51.003 に答える