12

次の値の文字列があります。

var string = "<img alt='' src='http://api.com/images/UID' /><br/>Some plain text<br/><a href='http://www.google.com'>http://www.google.com</a>"

可能であれば、文字列URLの属性部分で保留を取りたいと思います。src

JavaScript を使用してこれを行うにはどうすればよいですか?

4

7 に答える 7

41

これを行う 1 つの方法は、正規表現を使用することです。

var str = "<img alt='' src='http://api.com/images/UID' /><br/>Some plain text<br/><a href='http://www.google.com'>http://www.google.com</a>";

var regex = /<img.*?src='(.*?)'/;
var src = regex.exec(str)[1];

console.log(src);

于 2012-09-12T17:50:49.887 に答える
7

1つのアプローチは、次のとおりです。

var string = "<img alt='' src='http://api.com/images/UID' /><br/>Some plain text<br/><a href='http://www.google.com'>http://www.google.com</a>",
    srcWithQuotes = string.match(/src\=([^\s]*)\s/)[1],
    src = srcWithQuotes.substring(1,srcWithQuotes.length - 1);
console.log(src);​

JSフィドルデモ

src=これは、 (通常の式内で特別な意味を持つため、バックスラッシュでエスケープされます)で始まり=、その後に空白以外の文字(^\s*)が続き、その後に空白が続く文字のシーケンスに効果的に一致します。文字(\s)。

srcこの式は、属性を区切るために使用される引用符を明示的にキャプチャします。これは、変数srcのサブストリングを取得することによって返されます。これは、 (最初​​のゼロ番目の文字が属性区切り文字である必要があります)から始まり、最後の文字の前のインデックス(最後の引用符)までです。属性を区切る)。srcWithQuotes1

ドキュメントフラグメントを使用した、少し複雑な(ただし、信頼性が高い可能性がある)アプローチがあります。

var string = "<img alt='' src='http://api.com/images/UID' /><br/>Some plain text<br/><a href='http://www.google.com'>http://www.google.com</a>",
    temp = document.createElement('div'),
    frag = document.createDocumentFragment();

temp.innerHTML = string;
frag.appendChild(temp);
console.log(temp.getElementsByTagName('img')[0].src);​​​​​​

JSフィドルデモ

もちろん、この例では、tempノード内の画像を見つけるために任意のアプローチを使用できます(getElementById()getElementsByClassName()...)。

于 2012-09-12T18:00:16.963 に答える
7

常にhtmlデータになる場合の代替方法。

var string ="<img alt='' src='http://api.com/images/UID' /><br/>Some plain text<br/><a href='http://www.google.com'>http://www.google.com</a>";

var elem= document.createElement("div");
elem.innerHTML = string;

var images = elem.getElementsByTagName("img");

for(var i=0; i < images.length; i++){
   console.log(images[i].src);   
}
​

ライブデモ

于 2012-09-12T17:52:36.050 に答える
5

ネイティブ DOM (GET になります)

var str = "<img alt='' src='http://api.com/images/UID' /><br/>Some plain text<br/><a href='http://www.google.com'>http://www.google.com</a>",
d = document.createElement('div'),
srcs = [];
d.innerHTML = str;
srcs = Array.prototype.slice.call(d.querySelectorAll('[src]'),0);
while( srcs.length > 0 ) console.log( srcs[0].src ), srcs.shift();

または正規表現

var str = "<img alt='' src='http://api.com/images/UID' /><br/>Some plain text<br/><a href='http://www.google.com'>http://www.google.com</a>",
re = /\ssrc=(?:(?:'([^']*)')|(?:"([^"]*)")|([^\s]*))/i, // match src='a' OR src="a" OR src=a
res = str.match(re),
src = res[1]||res[2]||res[3]; // get the one that matched

src; // http://api.com/images/UID
于 2012-09-12T18:03:14.370 に答える
0

jQuery を使用してこれを行うことができます。find メソッドを使用して、画像の src 属性を取得します。

var str = '<img src="/uploads/thumbnail/79a23278ec18b2fc505b06ab799d5ec672094e79.jpg">';

var result = $(str).find('img').eq(0).attr('src');  //  get a image src 
于 2016-10-20T06:44:48.057 に答える
-2

Faccy 2015: DOM 経由で jQuery と CofeeScript を使用する

str = '<img alt='' src='http://api.com/images/UID' /><br/>Some plain text<br/><a href='http://www.google.com'>http://www.google.com</a>'

img = $(@.content).find('img').each ()->
  srcimg = $(@).attr('src')
  console.log srcimg
于 2015-03-25T18:10:37.910 に答える