JS正则替换,貌似又碰到BUG了

<script>
    var html = '<div>'
                +'<ul>'
                    +'<li>'
                        +'<a href="javascript:void(0)">111111111111111</a>'
                    +'</li>'
                    +'<li>'
                        +'<a href="http://baidu.com">22222222222222</a>'
                    +'</li>'
                +'</ul>'
            +'</div>';
    var replaceHtml = html.replace(/<(?!a|img).*?>|style=".*?"/gi,'');
    var replaceHtmlA = replaceHtml.replace(/(<a.*?>)(.*?)(<\/a>)/gi,function($0, $1, $2, $3){
        //这里的函数貌似直接不执行了
        console.log($0);
    });
</script>

下面的是可以的

<script>
    var html = '<div>'
                +'<ul>'
                    +'<li>'
                        +'<a href="javascript:void(0)">111111111111111</a>'
                    +'</li>'
                    +'<li>'
                        +'<a href="http://baidu.com">22222222222222</a>'
                    +'</li>'
                +'</ul>'
            +'</div>';
    var replaceHtmlA = html.replace(/(<a.*?>)(.*?)(<\/a>)/gi,function($0, $1, $2, $3){
        //这里是可以正常输出的
        console.log($0);
        console.log($1);
    });
</script>

是什么原因?

阅读 2.4k
1 个回答
var reg=/(<a.*?>)(.*?)(<\/a>)/gi;
reg.test(replaceHtml);

匹配失败了啊,上面的正则是不是写错了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题