子字符串/正则表达式以获取字符串中保存的 SRC 值
substring/regex to get a src value held in a string
我有一个值为:
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>"
如果可能的话,我想将字符串的src
属性部分中保存的URL
。
如何使用 JavaScript 执行此操作?
一种方法是使用正则表达式。
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);
如果它总是 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);
}
现场演示
一种方法如下:
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
属性的引号,通过获取 srcWithQuotes
变量的子字符串返回src
,从 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>",
temp = document.createElement('div'),
frag = document.createDocumentFragment();
temp.innerHTML = string;
frag.appendChild(temp);
console.log(temp.getElementsByTagName('img')[0].src);
JS小提琴演示。
当然,在这个例子中,你可以使用任何你喜欢的方法在temp
节点中查找图像(getElementById()
,getElementsByClassName()
...(。
Native 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
假设您要专门匹配<img>
标记中的src
属性。您可以使用此正则表达式,因为它将与标记匹配,仍然保留它可能具有的其他属性以及 src
属性中的其他内容:
var matches = string.match(/<img([^>]+)src="[/]?([^"]+)"([^>]*)>|<( *)img( *)[/>|>]/g);
它可以改进,但在某些类型的打字中工作正常。
例如,如果要匹配<img>
甚至<img src="/200px-Unofficial_JavaScript_logo_2.svg.png" alt="" width="100" height="172" />
以向 URL 添加某些内容,则可以执行以下替换:
string.replace(/<img([^>]+)src="[/]?([^"]+)"([^>]*)>|<( *)img( *)[/>|>]/g, '<img $1src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Unofficial_JavaScript_logo_2.svg/$2" $3>');
jQuery 来做到这一点,使用 find 方法,获取图像的 src 属性。
var str = '<img src="/uploads/thumbnail/79a23278ec18b2fc505b06ab799d5ec672094e79.jpg">';
var result = $(str).find('img').eq(0).attr('src'); // get a image src
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
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- .value返回字符串,直到我将其保存到变量
- 如何在jquery、javascript、HTML5中以base64字符串保存为(PDF、doc、xls、png.)
- 在本地存储中保存并返回随机生成的字符串
- JavaScript字符串中的换行符也保存为.txt
- 如果字符串保存在变量中,如何查找包含字符串的ID
- 保存cookie数据,字符串语言不是英语
- 通过AJAX发送jquery字符串,并使用PHP将其保存到html文件中
- JavaScript:将字符串的一部分放入DOM容器中,保存溢出
- Parse.com / Javascript - 将用户对象ID字符串保存为用户指针
- 从 Base64 字符串保存图像不会打开
- 我应该如何在javascript中将复杂对象作为字符串保存
- 将包含引号的长字符串保存到隐藏的输入中
- 将base64字符串保存为文件
- Redis将字符串保存为某些操作系统的缓冲区,而不是其他操作系统
- 将非法字符串保存在隐藏输入中
- 将每个新字符串保存到本地存储中的数组中
- 将DOM对象保存在内存中Vs将HTML字符串保存在内存中以便重复使用
- 将Javascript生成的JSON字符串保存为文件:web2py
- 将字符串保存到变量和console.log时,拆分字符串会得到不同的结果