no-control-regex
Запрет управляющих символов в регулярных выражениях
Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило
Управляющие символы — это специальные невидимые символы из диапазона ASCII 0–31. Эти символы редко используются в строках JavaScript, поэтому регулярное выражение, содержащее элементы, которые явно сопоставляются с такими символами, скорее всего, является ошибкой.
Подробности правила
Это правило запрещает управляющие символы и некоторые escape-последовательности, соответствующие управляющим символам, в регулярных выражениях.
Следующие элементы шаблонов регулярных выражений считаются возможными ошибками ввода и поэтому запрещены этим правилом:
- Шестнадцатеричные escape-последовательности символов от
\x00до\x1F. - Unicode escape-последовательности символов от
\u0000до\u001F. - Escape-последовательности кодовых точек Unicode от
\u{0}до\u{1F}. - Неэкранированные символы от U+0000 до U+001F.
Управляющие escape-последовательности, такие как \t и \n, этим правилом разрешены.
Примеры неправильного кода для этого правила:
/*eslint no-control-regex: "error"*/
const pattern1 = ;
const pattern2 = ;
const pattern3 = ;
const pattern4 = ;
const pattern5 = ;
const pattern6 = new RegExp(); // raw U+000C character in the pattern
const pattern7 = new RegExp(); // \x0C pattern
Примеры правильного кода для этого правила:
/*eslint no-control-regex: "error"*/
const pattern1 = /\x20/;
const pattern2 = /\u0020/;
const pattern3 = /\u{20}/u;
const pattern4 = /\t/;
const pattern5 = /\n/;
const pattern6 = new RegExp("\x20");
const pattern7 = new RegExp("\\t");
const pattern8 = new RegExp("\\n");
Параметры
У этого правила нет параметров.
Известные ограничения
При проверке вызовов конструктора RegExp это правило анализирует вычисленные шаблоны регулярных выражений. Поэтому, хотя это правило предназначено для разрешения синтаксиса, такого как \t, оно не разрешает new RegExp("\t"), поскольку вычисленный шаблон (строковое значение "\t") содержит необработанный управляющий символ (символ TAB).
/*eslint no-control-regex: "error"*/
new RegExp("\t"); // disallowed since the pattern is: <TAB>
new RegExp("\\t"); // allowed since the pattern is: \t
Между new RegExp("\t") и new RegExp("\\t") нет разницы в поведении, и в обоих случаях очевидно намерение сопоставить символ TAB. Для целей этого правила оба варианта одинаково допустимы, но оно разрешает только new RegExp("\\t").
Когда не следует использовать это правило
Если вам необходимо сопоставлять шаблоны с управляющими символами, отключите это правило.
Связанные правила
Версия
Это правило появилось в ESLint v0.1.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-control-regex