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

如何扩展Stylelint的kebab-case正则以支持双下划线分隔符?

解决Stylelint CSS类名正则支持双下划线分隔的问题

原Stylelint默认的类名校验正则仅支持kebab-case命名:

^([a-z][a-z0-9]*)(-[a-z0-9]+)*$

你之前尝试的正则^([a-z][a-z0-9]*)(__)?(-[a-z0-9]+)*$无法生效,是因为它只允许在类名开头的第一个片段后添加一次可选双下划线,无法匹配像v-list-item__prepend这种先经过多次短横线分隔、再用双下划线分隔的结构。

正确的正则写法

如果你需要同时支持短横线(-)和双下划线(__)作为分隔符,且两种分隔符可以混合使用,推荐使用:

^[a-z][a-z0-9]*(?:(?:-|__)[a-z0-9]+)*$

正则说明

  • ^[a-z][a-z0-9]*:强制类名以小写字母开头,后续可跟任意数量的小写字母或数字
  • (?:(?:-|__)[a-z0-9]+)*:允许类名后续出现任意数量的分隔片段,每个片段以-或__开头,后面跟小写字母或数字((?:...)为非捕获组,仅用于分组匹配,不保存匹配结果)

验证匹配

这个正则可以正确匹配你列出的所有有效类名:

  • foo-bar
  • v-list-item__prepend
  • v-list-item__spacer

同时也支持其他混合分隔的合法命名(如foo__bar、foo-bar__baz-qux等)。


内容的提问来源于stack exchange,提问作者Dónal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:20:17