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 是关于捕获的信息的 第一个应该是满足正则的部分 第一个第一次捕获的内容 第二个 第二次捕获的内容 这个不是很清楚