在javascript中提取正则表达式组无法正常工作

时间:2013-12-07 22:09:37

标签: javascript regex grouping

我正在尝试使用javascript的regexp提取img的{​​{1}}但我无法使用这些组。到目前为止,我想出了类似的东西:

src

然而,我只得到整个模式的匹配

3 个答案:

答案 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");