*符号选定0个或一个或多个给定的表达,
?符号选定0个或一个,
*?这个应该是非贪心选择,跟单个?有什么区别吗?
const tags = /^(area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
function convert(html) {
return html.replace(
/(<(\w+)[^>]*?)\/>/g, (all, front, tag) => {
return tags.test(tag) ? all :
front + "></" + tag + ">";
});
}
这段函数用来关闭类似<table/>这种非自动关闭的元素,但是不是很理解作者在replace中使用*?而不是?。
要理解 正则里的 贪婪匹配 和 非贪婪匹配
常规的
*和+是贪婪匹配后面加上
?就是是非贪婪匹配*?+?理解一下下面这个