JavaScript中正则表达式 *?与 ?或 *有什么区别吗?

符号选定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中使用*?而不是?。


慕码人2483693
浏览 404回答 1
1回答

尚方宝剑之说

要理解 正则里的 贪婪匹配 和 非贪婪匹配常规的&nbsp;*&nbsp;和&nbsp;+&nbsp;是贪婪匹配后面加上&nbsp;?&nbsp;就是是非贪婪匹配&nbsp;*?&nbsp;+?理解一下下面这个'aaaaa'.match(/(a*?)(a*)/)//&nbsp;结果是["aaaaa",&nbsp;"",&nbsp;"aaaaa"]'aaaaa'.match(/(a*)(a*?)/)//&nbsp;结果是[&nbsp;"aaaaa",&nbsp;"aaaaa",&nbsp;""&nbsp;]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript