符号选定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中使用*?而不是?。
1 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
要理解 正则里的 贪婪匹配 和 非贪婪匹配
常规的 *
和 +
是贪婪匹配
后面加上 ?
就是是非贪婪匹配 *?
+?
理解一下下面这个
'aaaaa'.match(/(a*?)(a*)/)// 结果是["aaaaa", "", "aaaaa"]'aaaaa'.match(/(a*)(a*?)/)// 结果是[ "aaaaa", "aaaaa", "" ]
添加回答
举报
0/150
提交
取消