日期:2014-05-16  浏览次数:20393 次

javascript里的replace 函数

        var tags =
                /^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i;
        function convert(html) {
            return html.replace(/(<(\w+)[^>]*?)\/>/g, function (all, front, tag) {
                return tags.test(tag) ?
                        all :
                        front + "></" + tag + ">";
            });
        }


第一,不太懂replace里的这个正则的意思。/(<(\w+)[^>]*?)\/>/  其中,*和? ,*应该是作用于[^>] ,而 ? 呢 ? 还有两个() ,捕获两次,还是 ?

第二,function里的传入参数的意思。 all -> 对replace里的正则,完全匹配的字符吧。frone 呢?(第一个括号里的捕获?)   tag呢?

------解决方案--------------------
1 ?是最少匹配的意思 ()捕获第一次捕获里的东西
2 是关于捕获的信息的  第一个应该是满足正则的部分  第一个第一次捕获的内容  第二个  第二次捕获的内容  这个不是很清楚