求 js正则抓取并替换<img>中的src,alt和title属性值从一长串代码中 抓取 符合 <img ... > 并 提取 <img ... src="111.jpg" ... title="111" ... alt="图片111" ....> 
的三个 属性 src , title 和 alt 的值补充: src="111.jpg" 可以有 这几种形式:
src="111.jpg" 或 src="  111.jpg " 或 src='111.jpg' 或 src='  111.jpg  ' 或 src= 111.jpg 或 直接没有src属性同理 
title="111" 可以有 这几种形式:
title="111" 或 title="  111 " 或 title='111' 或 title='  111  ' 或 title= 111 或 直接没有title属性同理 
alt="图片111" 可以有 这几种形式:
alt="图片111" 或 alt="  图片111 " 或 alt='图片111' 或 alt='  图片111  ' 或 alt= 图片111 或 直接没有alt属性还有 src ,title , alt 属性 没有固定顺序 可以随意调换, 记得 也可能没有三个当中的一个!
用$1,$2....$9 进行替换成
 <img ... src="$1" ... title="$2" ... alt="$3" ....> 
这种形式
如果 没有当中的属性 ,就值为空
这样的正则表达式 有点复杂,我写不出来
高手帮帮忙吧

解决方案 »

  1.   


    // 分步吧, 从 codes 提取多个 <img> 标签, 存到  imgs 数组中.
    var imgs = [];
    codes.replace(/<img\b(?:\s+\w+(=(?:"[^"]*"|'[^']*'|\S+))?)*\s*\/?\s*>/ig, function($0) {
    imgs.push($0.replace(
    /img\b(?:\s+(?:src=(?:"\s*([^"]*)\s*"|'\s*([^']*)\s*'|(\S+))|title=(?:"\s*([^"]*)\s*"|'\s*([^']*)\s*'|(\S+))|alt=(?:"\s*([^"]*)\s*"|'\s*([^']*)\s*'|(\S+))|\w+(?:=(?:"[^"]*"|'[^']*'|\S+))?))*/i,
    'img src="$1$2$3" title="$4$5$6" alt="$7$8$9"'
    ));
    });
    alert(imgs.join("\n"));
      

  2.   

    看到LZ的需求,我想不用正则比较好吧。我的想法是,用JS。var box = document.createElement("div");div.innerHTML = 你的字符串;document.body.appendChild(box);var list = box.getElementsByTagName("img");下面就好说了