0

検索用の正規表現を作成しようとしています: background-image:url('URL'); URL は画像の外部リンクです。このようなことを試みています:

 /\s*?[ \t\n]background-image:url('https?:\/\/(?:[a-z\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:jpe?g|gif|png)$');/i

しかし、それを機能させることができませんでした。これをjavascript/jqueryで使用しています

4

3 に答える 3

-1

エパスカレロは頭に釘を打ちました。この情報源はあなたが管理していますか? または、少なくとも予測可能な Web サイトですか? 入力と期待される結果の複数の異なる例は何ですか?

これは常に二重引用符で囲まれるので、URL は常に単一引用符で囲まれますか? 一部の古い Web サイトでは、CSS ファイルまたはヘッダー CSS で二重引用符が使用されています。

全体をキャプチャしますか?それとも、結果の URL を抽出しようとしているだけですか?

SirCapsAlot から良い質問が寄せられました。一般的に背景画像の URL を探しているだけですか? Background プロパティも使用できるため、JavaScript で を使用して設定することもできます .backgroundImage="url(image.jpg)"

そして、あなたは間違いなくhttp(s)を含むものだけが欲しいですか?

あなたが与えた限られた要件では、これは最高の正規表現です:

background-image\s*:\s*url\('(https?://[^']+)

あなたの要件を変更する可能性のある私の質問に対する回答がある場合は、ここにコメントしてください。したがって、私の回答です。

壊す:

background-image:\s*url  //Find the literal text to begin
\('                      //Find the literal opening parens and quote
(                        //Begin Capture Group 1
    https?://            //Require the match of https:// (the s is optional because of the ?)
    [^']+                //Require that everything until the next quote is matched
)                        //Capture the result into Group 1

同僚は、クロージングティックをキャプチャしなかったために反対票を投じられた可能性があると指摘しました. 注: 終了ティックをキャプチャすることは無駄なステップであり、この正規表現が機能するために必要ではありません。

彼はまた、URL 部分に http または https を要求したことで誰かが私に反対票を投じた可能性があることも指摘しました。しかし、ユーザーの質問は、内部 URL ではなく、特に外部 URL に関するものでした。したがって、これは有効な要件であり、彼が求めたものに近づけます。

すっごく...なぜこれが反対票を投じたのかわかりません。

于 2013-06-10T17:19:25.053 に答える