Regex从css中删除@font face规则



如何从css 中完全删除字体

我有以下代码:

css = `
@font-face
{
font-family:Rating;
src:url(data:application/x-font-ttf;
charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjA....)format('woff');
font-weight:400;
font-style:normal
}
#milk{
}
@font-face{
p {
}
}
.some-class{
}`
css = css.replace(/@font[^{]+{([^{}]*{[^}{]*})+[^}]+}/gi,'')
console.log(css)

预期结果是删除所有字体的正面

然而,它给出了:

@font-face
{
font-family:Rating;
src:url(data:application/x-font-ttf;
charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjA....)format('woff');
font-weight:400;
font-style:normal
}
#milk{
}
.some-class{
}

它不会删除第1个@font-face

解决了问题:

工作代码

css = `
@font-face
{
font-family:Rating;
src:url(data:application/x-font-ttf;
charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjA....)format('woff');
font-weight:400;
font-style:normal
}
#milk{
}
@font-face{
p {
}
}
.some-class{
}`
css = css.replace(/@font-face[^{]*{([^{}]|{[^{}]*})*}/gi,'')
console.log(css)

最新更新