我正在尝试使用javascript的regexp提取img
的{{1}}但我无法使用这些组。到目前为止,我想出了类似的东西:
src
然而,我只得到整个模式的匹配
答案 0 :(得分:1)
不确定为什么要使用正则表达式执行此操作;
只需使用:
document.getElementById('idOfImgElement').src;
或者更简单,使用jQuery:
$('#idOfImgElement').attr(src);
但如果您真的想用正则表达式执行此操作,请使用:
var str = "<img src=\"http://www.omgubuntu.co.uk/wp-content/uploads/2013/12/Multim.jpg\" />";
var matches = (/src=\"(.*?)\"/g).exec(str);
window.print(matches[1]);
答案 1 :(得分:1)
你的字符串中可能包含多少个img标签?假设1然后忘记全局标志(并通过exec迭代)并简单地创建一个解释整个字符串并使用捕获组的正则表达式。然后,您可以在索引match
中指定返回您知道将代表它的捕获组。因为,在这些类型的问题中,似乎总是存在一个未提及的警告,我使表达式更加紧张,而不是元素中的其他属性。所以,如果它 比你让它更复杂,你可以使用这个正则表达式:
(?:<img )?[^>]+src=(["'])(.*)\1
报价捕获组是必要的,以便您匹配报价。你显示双引号但是有保证吗?在这个正则表达式中,第二个捕获组始终是URL(更精确的是src的内容)。
在代码中:
var str = '<img src="http://www.omgubuntu.co.uk/wp-content/uploads/2013/12/Multim.jpg" />';
var src = str.match(/(?:<img )?[^>]+src=(["'])(.*)\1/)[2]
答案 2 :(得分:0)
我使用没有gm
标志的regexp实现了这个目标
var re_imgsrc = /.*src=\"(.*?)\".*/
imageUrl = str.replace(re_imgsrc, "$1");