Eslint 结合命名约定

Eslint combining naming conventions

我想合并 snake_casePascalCase 命名约定。因此,声明一个 class 其名称必须符合以下格式 strictlyPascal_SnakePascal_Snake_Pascal_EtcOnlyPascalPascal.

这就是我在 esling.config 中尝试做的事情:

"@typescript-eslint/naming-convention": [
  {
      selector: "class",
      format: null,
      custom: {
          regex: "([A-Z]\w*_?[A-Z]\w+)|([A-Z]\w*[A-Z]?\w+)",
          match: true,
      },
  },
]

不幸的是,这个regex并不严格。我想要的是:

  1. _之后必须至少有一个大写字母。
  2. 如果您不提供 _ — 您必须根据 PascalCase 格式命名 类。

如何获取?

使用 \w 可以匹配 upper/lower 个大小写字符和 _

您可以先匹配可选的下划线,然后再匹配可选重复组中的大写字符 A-Z。

(如果需要,请注意对反斜杠进行双重转义。)

\b[A-Z][a-z]*(?:_?[A-Z][a-z]*)*\b

Regex demo

如果您不想匹配单个 A 或 AA,您可以将小写字符重复 1 次以上。

\b[A-Z][a-z]+(?:_?[A-Z][a-z]+)*\b