要匹配字符串"<img border=0 src='/UploadFiles/20111202155853665.jpg'>"的中路径的正则表达式怎么写啊??        var i="<img border=0 src='/UploadFiles/20111202155853665.jpg'>";
var reg=/.*src=('|")(.*)\2.*/g;
i.replace(reg,function(m,p,o){

});中replace函数中能用捕获组么?
求解答!!!

解决方案 »

  1.   


    <script>var i="<img border=0 src='/UploadFiles/20111202155853665.jpg'>";
        var reg=/.*src=('|")(.*)\1.*/;
    var m = i.match(reg);
    alert(m[2]);
    </script>
      

  2.   


    var i = "<img border=0 src='/UploadFiles/20111202155853665.jpg'>";
    var reg = /(<img [\s\S]*?src=('|"))(.*)(\2[\s\S]*?>)/ig;
    i = i.replace(reg, "$1xxxx$4");
    alert(i)
      

  3.   

    var i = "<img border=0 src='/UploadFiles/20111202155853665.jpg'>";
    var reg = /<img.*?src=(['\"]?)([^'\"]+)\1.*?>/ig;
    i = reg.exec(i);
    alert(i)
      

  4.   

    怎么匹配src=‘之后的路径 啊。。JS中的正则好像^$..这样的的位置匹配符会匹配字符。。而且好像不支持正向和反向预搜索啊var i = "<img border=0 src='/UploadFiles/20111202155853665.jpg'>";
    var reg = /(<img [\s\S]*?src=('|"))(.*)(\2[\s\S]*?>)/ig;
    i = i.replace(reg, "$1xxxx$4");这样是用捕获组,能不能只匹配路径啊??
      

  5.   

    JS的正则不支持(?=exp)但支持(?<=exp)所以要灵活变通
      

  6.   

    var str = "<img border=0 src='/UploadFiles/20111202155853665.jpg'>";
    var reg = /(src=(?:\'|\"))([^\'\"\>]*)(?=\'|\")/g;    
    str = str.replace(reg, function(){
    var args = arguments;
        return args[1] + "myImage.jpg";
    });
    alert(str);
      

  7.   

    搞错了,应该反过来<script>
    alert(/a(?=b)/.exec("ab")) //a
    </script>
      

  8.   

    我把简化成这样var reg = /(src=(?:'|"))(.*?)(?='|")/g;
    但不明白 (?:’|”)和(?=‘|“)的用法。。是正反预搜索么??为什么不可以(?:(‘|“)),(?=\3)啊?(这样就可以用捕获组了)。还有arguments[1]是索引的位置吧,怎么。求指教!
      

  9.   

    而且看了很多文档,都说……^ &本身是不匹配的,但测试结果他们会匹配啊?
      

  10.   

    (?=‘|“)是正向预查,(?:’|”)只是把其中的内容独立出来,有点像普通运算如var result = (a + b) * c;中的括号。只是在正则中()有其特殊的意思,所有才用(?:’|”)来表示。不知道我说得够清楚没?
    还有,我不建议你那样简化,容易出错。比如src的值包含特殊字符‘,”等时。