You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写匹配不含'critical'且以s?css结尾的正则表达式

解决不含'critical'的CSS/SCSS文件名匹配正则问题

嘿,你的第一个正则写得没问题!咱们来搞定第二个的问题~

首先,你原来的/.*?(?<!\.critical).*\.s?css$/之所以失效,是因为这个**反向后顾(negative lookbehind)**只检查了某个位置前面不是.critical,但没法保证整个字符串里完全没有critical这个子串——比如critical.css还是会被它匹配到,因为在某个位置前面确实没有.critical。

正确的第二个正则写法

我们需要用**否定预查(negative lookahead)**来确保整个字符串里不存在critical,再结合后缀匹配:

/^(?!.*critical).*\.s?css$/

拆解一下原理:

  • ^:锚定字符串的开头,确保预查从整个字符串的最开始生效
  • (?!.*critical):否定预查断言——意思是“从当前位置(也就是字符串开头)往后看,找不到任何位置出现critical子串”
  • .*:匹配任意数量的任意字符(这里用贪婪匹配就足够,不会影响结果)
  • \.s?css$:匹配结尾的.css或者.scss(s?表示s可选)

测试验证

  • ✅ 会匹配的字符串:main.css、dashboard.scss、ui-components.css(完全不含critical)
  • ❌ 不会匹配的字符串:critical.scss、app-critical.css、theme.critical.scss(包含critical子串)

如果需要忽略大小写(比如匹配Critical.css也排除),可以加上i标志:

/^(?!.*critical).*\.s?css$/i

内容的提问来源于stack exchange,提问作者Axiol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:27:55