示例字符串如下:<img border="0" src='id=xxxxx'>
<img src='id=xxxxx' border="0">
<img src="id=xxxxx">
<img src=id=xxxxx>
希望用正则提取<img>标签中src的值,有一点要求:src的值中必须包含“id=”这个特征

解决方案 »

  1.   

    这个不用正则也可以,直接遍历所有的img标签
      

  2.   

    我知道用遍历,可是遍历过程中,我只想取src的值,所以遍历过程中还得用到正则上面示例字符串不太正确,应该是<img border="0" src='s.php?id=xxxxx'>
    <img src='s.php?id=xxxxx' border="0">
    <img src="s.php?id=xxxxx">
    <img src=s.php?id=xxxxx>希望用正则提取<img>标签中src的值,有一点要求:src的值中必须包含“s.php”这个特征
      

  3.   


    var arrImg=document.getElementsByTagName("img"),arrResult=[];
    for(var i=0;i<arrImg.length;i++){
        if(arrImg[i].src.indexOf("s.php")>-1){
             arrResult.push(arrImg[i].src);
        }
    }
      

  4.   

    src后面的值,有的用双引号"",有的用'',也有的直接用src=s.php?id=xxx我自己写了个正则,但是匹配得不够精准str.Pattern = "<img(.+?)[\src]=[""|\']*([^\s]+?)[""|\']*(\s|>)"
      

  5.   

    回3楼,我是用在ASP中的,我想ASP正则与JS正则应该通用,所以发在JS区了,我想用正则实现
      

  6.   

    回5楼,^"id=.*?"$应该加在什么位置<img src=s.php?id=xxx>这种形式不知道怎么匹配str.Pattern = "<img(.+?)src=[""|\']*([^\s]+?)[""|\']*(\s|>)"
      

  7.   

    var html = "<img border=\"0\" src='s.php?id=xxxxx'>"//y
      +"<img src='s.php?id=xxxxx' border=\"0\">"//y
      +"<img src=\"s.php?id=xxxxx\">"//y
      +"<img src=s.php?id=xxxxx>"//y
      +"<img src=wwwx.php?id=www a=2>"//no
      +"<img src=wwws.php?id=www a=2>";//y
    var p = /<img[^>]*src\s*=\s*(["'])?[^>]*(?=s\.php)[^>]*>/ig
    alert(html.match(p))
      

  8.   

    回9楼<img src=wwws.php?id=www a=2>这个不应该被匹配上准确的说,应该是s.php应该紧跟在src=的后面,src的值可能会有单引号、双引号,或者直接=
      

  9.   

    自己动手改改吧。
            var html = "<img border=\"0\" src='s.php?id=xxxxx'>"//y
                      +"<img src='s.php?id=xxxxx' border=\"0\">"//y
                      +"<img src=\"s.php?id=xxxxx\">"//y
                      +"<img src=s.php?id=xxxxx>"//y
                      +"<img src=wwwx.php?id=www a=2>"//no
                      +"<img src=wwws.php?id=www a=2>";//no
            var p = /<img[^>]*src\s*=\s*(["'])?(?=s\.php)[^>]*>/ig
            alert(html.match(p))
      

  10.   

    感谢大家的帮助,只是我要在ASP(vbscript)里使用正则,和JS的正则有些出入
      

  11.   

    我现在使用的正则是:str.Pattern = "<img(.+?)src=[""|\']*s\.php*([^\s]+?)[""|\']*(\s|>)"
    能正确匹配,但感觉不是很完善
      

  12.   

    这样行不?var val1 = "<img border=\"0\" src='id=xxxxx'>";
    var val2 = '<img src=s.php?id=xxxxx>';
    var val3 = '<img src="s.php?id=xxxxx">';
    var val4 = '<img src=\'s.php?id=xxxxx\' border="0">';
    var pattern = /^<img.*src=([\'|\"]?)([\w\.]*\?)?id=\w+\1.*>$/i;
    alert(val1.match(pattern));
      

  13.   

    /<img[^>]*src\s*=\s*(["'])?[^>]*(?=s\.php)[^>]*>/ig