在javascript中提取正则表达式组不起作用

在javascript中提取正则表达式组不起作用,javascript,regex,grouping,Javascript,Regex,Grouping,我试图使用javascript的regexp提取img的src,但我无法使用这些组。到目前为止,我已经想出了这样的办法: >str "xxxxx src="http://www.omgubuntu.co.uk/wp-content/uploads/2013/12/Multim.jpg" xxxxx" >str.match(re) ["src="http://www.omgubuntu.co.uk/wp-content/uploads/2013/12/Multim.jpg""] >

我试图使用javascript的regexp提取
img
src
,但我无法使用这些组。到目前为止,我已经想出了这样的办法:

>str
"xxxxx src="http://www.omgubuntu.co.uk/wp-content/uploads/2013/12/Multim.jpg" xxxxx"
>str.match(re)
["src="http://www.omgubuntu.co.uk/wp-content/uploads/2013/12/Multim.jpg""]
>re
/src=\"(.*?)\"/g
>str.match(re)[1]
undefined

但是我只得到了整个模式的匹配

不确定您为什么要用regex执行此操作

只需使用:

document.getElementById('idofimgement').src

或者更简单,使用jQuery:

$('idofimgement').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]);
var-str=”“;
var matches=(/src=\“(.*?\”)/g.exec(str);
window.print(匹配[1]);

我在没有
gm
标志的情况下使用regexp实现了这一点

    var re_imgsrc = /.*src=\"(.*?)\".*/
    imageUrl = str.replace(re_imgsrc, "$1");

您的字符串中可能有多少个img标记?假设1,然后忘记全局标志(并遍历exec),只需生成一个解释整个字符串的正则表达式并使用捕获组。然后,您可以在
match
索引中指定返回您知道将代表它的捕获组。因为,在这些类型的问题中,似乎总是有一个未提及的警告,我将表达式与元素中的其他属性等一些可能性进行了比较。因此,为了防止它比您透露的更复杂,您可以使用以下正则表达式:

 (?:<img )?[^>]+src=(["'])(.*)\1
(?)
为了匹配引号,引号捕获组是必需的。显示双引号,但这有保证吗?在这个regext中,第二个捕获组始终是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]
var-str='';

var src=str.match(/(?):我正在用html标记解析流以进行处理,这就是我无法使用DOM的原因