编译时条件注释匹配开头标识正则?
来源:6-6 parse(2)

菜菜木子
2021-05-14
// 解析是否是条件注释
const conditionalComment = /^<!\[/
if (conditionalComment.test(html)) {
// 若为条件注释,则继续查找是否存在']>'
const conditionalEnd = html.indexOf(']>')
if (conditionalEnd >= 0) {
// 若存在 ']>',则从原本的html字符串中把条件注释截掉,
// 把剩下的内容重新赋给html,继续向后匹配
advance(conditionalEnd + 2)
continue
}
}
以上代码匹配条件注释来开头和结尾的正则,写法不太懂,
条件注释:
"<!--[if gt IE 6]> 用于 IE6 以上版本<![endif]-->"
开头是<!--,但是源码正则是/^<!\[/
结尾是]-->,但是源码里是]>,不是很理解
写回答
2回答
-
ustbhuangyi
2021-05-14
看图吧032021-05-16 -
ustbhuangyi
2021-05-14
条件注释参考 https://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment
012021-05-14