Reports standalone backslashes in regex patterns that look like incomplete escape sequences.
✅ This rule is included in the ts logical and logicalStrict presets.
In non-unicode mode, backslashes followed by certain characters are interpreted as literal backslash characters rather than escape sequences.
For example, /\c/ (without the unicode flag) is equivalent to /\\c/ — a literal backslash followed by c.
This behavior is described in Annex B of the ECMAScript specification.
Reports standalone backslashes (\) in regex patterns that don’t form a valid escape sequence.
The \c escape requires a letter A-Z to form a valid control escape sequence.
AEconsB0patteAE< =sp ansty="le--0:#5CA7E4;--1:#3A68">8 =sp>1<1/sp ansty="le--0:#F78C6C;--1:#AA09">821/sp><\csp ansty="le--0:#D9F5DD;--1:#1111">1\csp><1/sp ansty="le--0:#D6DEEB;--1:#403F">51/sp><3;d ivclassNa="meco">;d>/;d>3;d> 44AEco61B0pat446<88F spans="tyle--0:#D9F5DD;--1:#11">188F ><111/ spans="tyle--0:#82AAFF;--1:#3B">61B111/><0\cX spans="tyle--0:#D9F5DD;--1:#11">10\cX><111/ spans="tyle--0:#D6DEEB;--1:#40">3111/>
Using \c with a non-letter character results in a standalone backslash.
AEconsB0patteAE< =sp ansty="le--0:#5CA7E4;--1:#3A68">8 =sp>1<1/sp ansty="le--0:#F78C6C;--1:#AA09">821/sp><\csp ansty="le--0:#5CA7E4;--1:#3A68">8\csp>1<1/sp ansty="le--0:#D6DEEB;--1:#403F">51/sp><3;d ivclassNa="meco">;d>/;d>3;d> 44AEco61B0pat446<88F spans="tyle--0:#D9F5DD;--1:#11">188F ><111/ spans="tyle--0:#82AAFF;--1:#3B">61B111/><0\cA spans="tyle--0:#D9F5DD;--1:#11">10\cA><111/ spans="tyle--0:#D6DEEB;--1:#40">3111/>
Standalone backslashes can also occur inside character classes.
AEconsB0patteAE< =sp ansty="le--0:#5CA7E4;--1:#3A68">8 =sp>1<1/sp ansty="le--0:#82AAFF;--1:#3B61">B1/sp><0[sp ansty="le--0:#F78C6C;--1:#AA09">820[sp><\csp ansty="le--0:#82AAFF;--1:#3B61">B\csp><0]sp ansty="le--0:#D9F5DD;--1:#1111">10]sp><1/sp ansty="le--0:#D6DEEB;--1:#403F">51/sp><3;d ivclassNa="meco">;d>/;d>3;d> 44AEco61B0pat446<88F spans="tyle--0:#D9F5DD;--1:#11">188F ><111/ spans="tyle--0:#82AAFF;--1:#3B">61B0[111/><\cA] spans="tyle--0:#D9F5DD;--1:#11">1\cA]><111/ spans="tyle--0:#D6DEEB;--1:#40">3111/>
The rule also checks regex patterns in RegExp constructor calls.
AEconsB0patteAE <= sp ansty="le--0:#7FDBCA;--1:#096E">72n= sp>AB0RegE5<3(sp ansty="le--0:#D9F5DD;--1:#1111">13(sp><1"sp ansty="le--0:#F78C6C;--1:#AA09">821"sp><\\sp ansty="le--0:#ECC48D;--1:#984E">4\\sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">531"sp><);d ivclassNa="meco"><);d>);d>);d> 44AEco61B0pat44A6E7<2new spans="tyle--0:#C792EA;--1:#88">42new><4AE spans="tyle--0:#82AAFF;--1:#3B">61B0Re4AE >31<111" spans="tyle--0:#F78C6C;--1:#AA">09111"><82\\ spans="tyle--0:#ECC48D;--1:#98">4E82\\><4DcX spans="tyle--0:#D9F5DD;--1:#11">14DcX><111" spans="tyle--0:#D6DEEB;--1:#40">3F111"><53) ;divclass="Name">53)>
Standard escape sequences like \n, \t, \d, and \\ are valid and not reported.
AEconsB0whitespaAE< =sp ansty="le--0:#5CA7E4;--1:#3A68">8 =sp>1<1/sp ansty="le--0:#82AAFF;--1:#3B61">B0\n\t1/sp><\rsp ansty="le--0:#D9F5DD;--1:#1111">1\rsp><1/sp ansty="le--0:#D6DEEB;--1:#403F">51/sp><3;d ivclassNa="meec-li">AEconsB0digiAE< =sp ansty="le--0:#5CA7E4;--1:#3A68">8 =sp>1<1/sp ansty="le--0:#82AAFF;--1:#3B61">B01/sp><\dsp ansty="le--0:#7FDBCA;--1:#096E">7\dsp><2+sp ansty="le--0:#D9F5DD;--1:#1111">12+sp><1/sp ansty="le--0:#D6DEEB;--1:#403F">51/sp>3;d><3;d ivclassNa="meec-li">AEconsB0literalBackslaAE< =sp ansty="le--0:#5CA7E4;--1:#3A68">8 =sp>1<1/sp ansty="le--0:#F78C6C;--1:#AA09">821/sp><\\sp ansty="le--0:#D9F5DD;--1:#1111">1\\sp><1/sp ansty="le--0:#D6DEEB;--1:#403F">51/sp>3;d><3;d ivclassNa="meco">;d>/;d>3;d>
This rule is not configurable.
If your codebase intentionally uses standalone backslashes in regex patterns and you understand the Annex B behavior, you might prefer to disable this rule.