为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕码人2483693 2019-01-29 16:45:40
符号选定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", "" ]


查看完整回答
反对 回复 2019-01-29
  • 1 回答
  • 0 关注
  • 403 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信