Eslint 结合命名约定
Eslint combining naming conventions
我想合并 snake_case
和 PascalCase
命名约定。因此,声明一个 class
其名称必须符合以下格式 strictly:Pascal_Snake
、Pascal_Snake_Pascal_Etc
、OnlyPascal
、Pascal
.
这就是我在 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
并不严格。我想要的是:
- 在
_
之后必须至少有一个大写字母。
- 如果您不提供
_
— 您必须根据 PascalCase
格式命名 类。
如何获取?
使用 \w
可以匹配 upper/lower 个大小写字符和 _
您可以先匹配可选的下划线,然后再匹配可选重复组中的大写字符 A-Z。
(如果需要,请注意对反斜杠进行双重转义。)
\b[A-Z][a-z]*(?:_?[A-Z][a-z]*)*\b
如果您不想匹配单个 A 或 AA,您可以将小写字符重复 1 次以上。
\b[A-Z][a-z]+(?:_?[A-Z][a-z]+)*\b
我想合并 snake_case
和 PascalCase
命名约定。因此,声明一个 class
其名称必须符合以下格式 strictly:Pascal_Snake
、Pascal_Snake_Pascal_Etc
、OnlyPascal
、Pascal
.
这就是我在 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
并不严格。我想要的是:
- 在
_
之后必须至少有一个大写字母。 - 如果您不提供
_
— 您必须根据PascalCase
格式命名 类。
如何获取?
使用 \w
可以匹配 upper/lower 个大小写字符和 _
您可以先匹配可选的下划线,然后再匹配可选重复组中的大写字符 A-Z。
(如果需要,请注意对反斜杠进行双重转义。)
\b[A-Z][a-z]*(?:_?[A-Z][a-z]*)*\b
如果您不想匹配单个 A 或 AA,您可以将小写字符重复 1 次以上。
\b[A-Z][a-z]+(?:_?[A-Z][a-z]+)*\b