Repository: ota-meshi/eslint-plugin-regexp
Pull request #552 (2023-08-15 02:41:46)

Change recommended config

changeset-bot[bot]: ###  ⚠️  No Changeset found

Latest commit: ec4582948c46ef062464344f59a3a0fcfdb3d772

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. **If these changes should result in a version bump, you need to add a changeset.**

<details><summary>This PR includes no changesets</summary>

  When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

</details>

[Click here to learn what changesets are, and how to add one](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md).

[Click here if you're a maintainer who wants to add a changeset to this PR](https://github.com/ota-meshi/eslint-plugin-regexp/new/config?filename=.changeset/khaki-colts-tell.md&value=---%0A%22eslint-plugin-regexp%22%3A%20patch%0A---%0A%0AChange%20recommended%20config%0A)



Patch:
diff --git a/.changeset/khaki-colts-tell.md b/.changeset/khaki-colts-tell.md
new file mode 100644
index 0000000..283dcf0
--- /dev/null
+++ b/.changeset/khaki-colts-tell.md
@@ -0,0 +1,5 @@
+---
+"eslint-plugin-regexp": major
+---
+
+Change recommended config
diff --git a/README.md b/README.md
index 9e3da6e..6b058f8 100644
--- a/README.md
+++ b/README.md
@@ -109,20 +109,20 @@ The `plugin:regexp/all` config enables all rules. It's meant for testing, not fo
 
 | Name                                                                                                                                     | Description                                                                             | 💼 | ⚠️ | 🔧 | 💡 |
 | :--------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- | :- | :- | :- | :- |
-| [no-contradiction-with-assertion](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-contradiction-with-assertion.html)           | disallow elements that contradict assertions                                            |    |    |    | 💡 |
+| [no-contradiction-with-assertion](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-contradiction-with-assertion.html)           | disallow elements that contradict assertions                                            | ✅  |    |    | 💡 |
 | [no-control-character](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-control-character.html)                                 | disallow control characters                                                             |    |    |    | 💡 |
 | [no-dupe-disjunctions](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-disjunctions.html)                                 | disallow duplicate disjunctions                                                         | ✅  |    |    | 💡 |
 | [no-empty-alternative](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-alternative.html)                                 | disallow alternatives without elements                                                  |    | ✅  |    |    |
 | [no-empty-capturing-group](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-capturing-group.html)                         | disallow capturing group that captures empty.                                           | ✅  |    |    |    |
-| [no-empty-character-class](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html)                         | disallow character classes that match no characters                                     |    |    |    |    |
+| [no-empty-character-class](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-character-class.html)                         | disallow character classes that match no characters                                     | ✅  |    |    |    |
 | [no-empty-group](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-group.html)                                             | disallow empty group                                                                    | ✅  |    |    |    |
 | [no-empty-lookarounds-assertion](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-empty-lookarounds-assertion.html)             | disallow empty lookahead assertion or empty lookbehind assertion                        | ✅  |    |    |    |
 | [no-escape-backspace](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-escape-backspace.html)                                   | disallow escape backspace (`[\b]`)                                                      | ✅  |    |    |    |
 | [no-invalid-regexp](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invalid-regexp.html)                                       | disallow invalid regular expression strings in `RegExp` constructors                    | ✅  |    |    |    |
 | [no-lazy-ends](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-lazy-ends.html)                                                 | disallow lazy quantifiers at the end of an expression                                   |    | ✅  |    |    |
-| [no-misleading-capturing-group](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-capturing-group.html)               | disallow capturing groups that do not behave as one would expect                        |    |    |    | 💡 |
-| [no-misleading-unicode-character](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html)           | disallow multi-code-point characters in character classes and quantifiers               |    |    | 🔧 | 💡 |
-| [no-missing-g-flag](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-missing-g-flag.html)                                       | disallow missing `g` flag in patterns used in `String#matchAll` and `String#replaceAll` |    |    | 🔧 |    |
+| [no-misleading-capturing-group](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-capturing-group.html)               | disallow capturing groups that do not behave as one would expect                        | ✅  |    |    | 💡 |
+| [no-misleading-unicode-character](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-misleading-unicode-character.html)           | disallow multi-code-point characters in character classes and quantifiers               | ✅  |    | 🔧 | 💡 |
+| [no-missing-g-flag](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-missing-g-flag.html)                                       | disallow missing `g` flag in patterns used in `String#matchAll` and `String#replaceAll` | ✅  |    | 🔧 |    |
 | [no-optional-assertion](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-optional-assertion.html)                               | disallow optional assertions                                                            | ✅  |    |    |    |
 | [no-potentially-useless-backreference](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-potentially-useless-backreference.html) | disallow backreferences that reference a group that might not be matched                |    | ✅  |    |    |
 | [no-super-linear-backtracking](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-super-linear-backtracking.html)                 | disallow exponential and polynomial backtracking                                        | ✅  |    | 🔧 |    |
@@ -140,7 +140,7 @@ The `plugin:regexp/all` config enables all rules. It's meant for testing, not fo
 | [control-character-escape](https://ota-meshi.github.io/eslint-plugin-regexp/rules/control-character-escape.html)                           | enforce consistent escaping of control characters                                          | ✅  |    | 🔧 |    |
 | [negation](https://ota-meshi.github.io/eslint-plugin-regexp/rules/negation.html)                                                           | enforce use of escapes on negation                                                         | ✅  |    | 🔧 |    |
 | [no-dupe-characters-character-class](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-dupe-characters-character-class.html)       | disallow duplicate characters in the RegExp character class                                | ✅  |    | 🔧 |    |
-| [no-extra-lookaround-assertions](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-extra-lookaround-assertions.html)               | disallow unnecessary nested lookaround assertions                                          |    |    | 🔧 |    |
+| [no-extra-lookaround-assertions](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-extra-lookaround-assertions.html)               | disallow unnecessary nested lookaround assertions                                          | ✅  |    | 🔧 |    |
 | [no-invisible-character](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-invisible-character.html)                               | disallow invisible raw character                                                           | ✅  |    | 🔧 |    |
 | [no-legacy-features](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-legacy-features.html)                                       | disallow legacy RegExp features                                                            | ✅  |    |    |    |
 | [no-non-standard-flag](https://ota-meshi.github.io/eslint-plugin-regexp/rules/no-non-standard-flag.html)                                   | disallow non-standard flags                                                                | ✅  |    |    |    |
@@ -167,7 +167,7 @@ The `plugin:regexp/all` config enables all rules. It's meant for testing, not fo
 | [prefer-regexp-test](https://ota-meshi.github.io/eslint-plugin-regexp/rules/prefer-regexp-test.html)                                       | enforce that `RegExp#test` is used instead of `String#match` and `RegExp#exec`             |    |    | 🔧 |    |
 | [require-unicode-regexp](https://ota-meshi.github.io/eslint-plugin-regexp/rules/require-unicode-regexp.html)                               | enforce the use of the `u` flag                                                            |    |    | 🔧 |    |
 | [sort-alternatives](https://ota-meshi.github.io/eslint-plugin-regexp/rules/sort-alternatives.html)                                         | sort alternatives if order doesn't matter                                                  |    |    | 🔧 |    |
-| [use-ignore-case](https://ota-meshi.github.io/eslint-plugin-regexp/rules/use-ignore-case.html)                                             | use the `i` flag if it simplifies the pattern                                              |    |    | 🔧 |    |
+| [use-ignore-case](https://ota-meshi.github.io/eslint-plugin-regexp/rules/use-ignore-case.html)                                             | use the `i` flag if it simplifies the pattern                                              | ✅  |    | 🔧 |    |
 
 ### Stylistic Issues
 
diff --git a/docs/rules/index.md b/docs/rules/index.md
index 445ebae..a99aae6 100644
--- a/docs/rules/index.md
+++ b/docs/rules/index.md
@@ -16,20 +16,20 @@ sidebarDepth: 0
 
 | Name                                                                            | Description                                                                             | 💼 | ⚠️ | 🔧 | 💡 |
 | :------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------- | :- | :- | :- | :- |
-| [no-contradiction-with-assertion](no-contradiction-with-assertion.md)           | disallow elements that contradict assertions                                            |    |    |    | 💡 |
+| [no-contradiction-with-assertion](no-contradiction-with-assertion.md)           | disallow elements that contradict assertions                                            | ✅  |    |    | 💡 |
 | [no-control-character](no-control-character.md)                                 | disallow control characters                                                             |    |    |    | 💡 |
 | [no-dupe-disjunctions](no-dupe-disjunctions.md)                                 | disallow duplicate disjunctions                                                         | ✅  |    |    | 💡 |
 | [no-empty-alternative](no-empty-alternative.md)                                 | disallow alternatives without elements                                                  |    | ✅  |    |    |
 | [no-empty-capturing-group](no-empty-capturing-group.md)                         | disallow capturing group that captures empty.                                           | ✅  |    |    |    |
-| [no-empty-character-class](no-empty-character-class.md)                         | disallow character classes that match no characters                                     |    |    |    |    |
+| [no-empty-character-class](no-empty-character-class.md)                         | disallow character classes that match no characters                                     | ✅  |    |    |    |
 | [no-empty-group](no-empty-group.md)                                             | disallow empty group                                                                    | ✅  |    |    |    |
 | [no-empty-lookarounds-assertion](no-empty-lookarounds-assertion.md)             | disallow empty lookahead assertion or empty lookbehind assertion                        | ✅  |    |    |    |
 | [no-escape-backspace](no-escape-backspace.md)                                   | disallow escape backspace (`[\b]`)                                                      | ✅  |    |    |    |
 | [no-invalid-regexp](no-invalid-regexp.md)                                       | disallow invalid regular expression strings in `RegExp` constructors                    | ✅  |    |    |    |
 | [no-lazy-ends](no-lazy-ends.md)                                                 | disallow lazy quantifiers at the end of an expression                                   |    | ✅  |    |    |
-| [no-misleading-capturing-group](no-misleading-capturing-group.md)               | disallow capturing groups that do not behave as one would expect                        |    |    |    | 💡 |
-| [no-misleading-unicode-character](no-misleading-unicode-character.md)           | disallow multi-code-point characters in character classes and quantifiers               |    |    | 🔧 | 💡 |
-| [no-missing-g-flag](no-missing-g-flag.md)                                       | disallow missing `g` flag in patterns used in `String#matchAll` and `String#replaceAll` |    |    | 🔧 |    |
+| [no-misleading-capturing-group](no-misleading-capturing-group.md)               | disallow capturing groups that do not behave as one would expect                        | ✅  |    |    | 💡 |
+| [no-misleading-unicode-character](no-misleading-unicode-character.md)           | disallow multi-code-point characters in character classes and quantifiers               | ✅  |    | 🔧 | 💡 |
+| [no-missing-g-flag](no-missing-g-flag.md)                                       | disallow missing `g` flag in patterns used in `String#matchAll` and `String#replaceAll` | ✅  |    | 🔧 |    |
 | [no-optional-assertion](no-optional-assertion.md)                               | disallow optional assertions                                                            | ✅  |    |    |    |
 | [no-potentially-useless-backreference](no-potentially-useless-backreference.md) | disallow backreferences that reference a group that might not be matched                |    | ✅  |    |    |
 | [no-super-linear-backtracking](no-super-linear-backtracking.md)                 | disallow exponential and polynomial backtracking                                        | ✅  |    | 🔧 |    |
@@ -47,7 +47,7 @@ sidebarDepth: 0
 | [control-character-escape](control-character-escape.md)                           | enforce consistent escaping of control characters                                          | ✅  |    | 🔧 |    |
 | [negation](negation.md)                                                           | enforce use of escapes on negation                                                         | ✅  |    | 🔧 |    |
 | [no-dupe-characters-character-class](no-dupe-characters-character-class.md)       | disallow duplicate characters in the RegExp character class                                | ✅  |    | 🔧 |    |
-| [no-extra-lookaround-assertions](no-extra-lookaround-assertions.md)               | disallow unnecessary nested lookaround assertions                                          |    |    | 🔧 |    |
+| [no-extra-lookaround-assertions](no-extra-lookaround-assertions.md)               | disallow unnecessary nested lookaround assertions                                          | ✅  |    | 🔧 |    |
 | [no-invisible-character](no-invisible-character.md)                               | disallow invisible raw character                                                           | ✅  |    | 🔧 |    |
 | [no-legacy-features](no-legacy-features.md)                                       | disallow legacy RegExp features                                                            | ✅  |    |    |    |
 | [no-non-standard-flag](no-non-standard-flag.md)                                   | disallow non-standard flags                                                                | ✅  |    |    |    |
@@ -74,7 +74,7 @@ sidebarDepth: 0
 | [prefer-regexp-test](prefer-regexp-test.md)                                       | enforce that `RegExp#test` is used instead of `String#match` and `RegExp#exec`             |    |    | 🔧 |    |
 | [require-unicode-regexp](require-unicode-regexp.md)                               | enforce the use of the `u` flag                                                            |    |    | 🔧 |    |
 | [sort-alternatives](sort-alternatives.md)                                         | sort alternatives if order doesn't matter                                                  |    |    | 🔧 |    |
-| [use-ignore-case](use-ignore-case.md)                                             | use the `i` flag if it simplifies the pattern                                              |    |    | 🔧 |    |
+| [use-ignore-case](use-ignore-case.md)                                             | use the `i` flag if it simplifies the pattern                                              | ✅  |    | 🔧 |    |
 
 ## Stylistic Issues
 
diff --git a/docs/rules/no-contradiction-with-assertion.md b/docs/rules/no-contradiction-with-assertion.md
index fa0677e..c357139 100644
--- a/docs/rules/no-contradiction-with-assertion.md
+++ b/docs/rules/no-contradiction-with-assertion.md
@@ -7,6 +7,8 @@ since: "v1.2.0"
 ---
 # regexp/no-contradiction-with-assertion
 
+💼 This rule is enabled in the ✅ `plugin:regexp/recommended` config.
+
 💡 This rule is manually fixable by [editor suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions).
 
 <!-- end auto-generated rule header -->
diff --git a/docs/rules/no-empty-character-class.md b/docs/rules/no-empty-character-class.md
index dbd6fd1..c7e50d7 100644
--- a/docs/rules/no-empty-character-class.md
+++ b/docs/rules/no-empty-character-class.md
@@ -7,6 +7,8 @@ since: "v1.2.0"
 ---
 # regexp/no-empty-character-class
 
+💼 This rule is enabled in the ✅ `plugin:regexp/recommended` config.
+
 <!-- end auto-generated rule header -->
 
 > disallow character classes that match no characters
diff --git a/docs/rules/no-extra-lookaround-assertions.md b/docs/rules/no-extra-lookaround-assertions.md
index 86bc97e..ecd10da 100644
--- a/docs/rules/no-extra-lookaround-assertions.md
+++ b/docs/rules/no-extra-lookaround-assertions.md
@@ -7,6 +7,8 @@ since: "v1.11.0"
 ---
 # regexp/no-extra-lookaround-assertions
 
+💼 This rule is enabled in the ✅ `plugin:regexp/recommended` config.
+
 🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
 
 <!-- end auto-generated rule header -->
diff --git a/docs/rules/no-misleading-capturing-group.md b/docs/rules/no-misleading-capturing-group.md
index 08d2ec2..e6001bd 100644
--- a/docs/rules/no-misleading-capturing-group.md
+++ b/docs/rules/no-misleading-capturing-group.md
@@ -7,6 +7,8 @@ since: "v1.12.0"
 ---
 # regexp/no-misleading-capturing-group
 
+💼 This rule is enabled in the ✅ `plugin:regexp/recommended` config.
+
 💡 This rule is manually fixable by [editor suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions).
 
 <!-- end auto-generated rule header -->
diff --git a/docs/rules/no-misleading-unicode-character.md b/docs/rules/no-misleading-unicode-character.md
index 58dc8f0..1e3f18e 100644
--- a/docs/rules/no-misleading-unicode-character.md
+++ b/docs/rules/no-misleading-unicode-character.md
@@ -7,6 +7,8 @@ since: "v1.2.0"
 ---
 # regexp/no-misleading-unicode-character
 
+💼 This rule is enabled in the ✅ `plugin:regexp/recommended` config.
+
 🔧💡 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix) and manually fixable by [editor suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions).
 
 <!-- end auto-generated rule header -->
diff --git a/docs/rules/no-missing-g-flag.md b/docs/rules/no-missing-g-flag.md
index 7145ba8..3347098 100644
--- a/docs/rules/no-missing-g-flag.md
+++ b/docs/rules/no-missing-g-flag.md
@@ -7,6 +7,8 @@ since: "v1.10.0"
 ---
 # regexp/no-missing-g-flag
 
+💼 This rule is enabled in the ✅ `plugin:regexp/recommended` config.
+
 🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
 
 <!-- end auto-generated rule header -->
diff --git a/docs/rules/use-ignore-case.md b/docs/rules/use-ignore-case.md
index d5be304..cc1a22a 100644
--- a/docs/rules/use-ignore-case.md
+++ b/docs/rules/use-ignore-case.md
@@ -7,6 +7,8 @@ since: "v1.4.0"
 ---
 # regexp/use-ignore-case
 
+💼 This rule is enabled in the ✅ `plugin:regexp/recommended` config.
+
 🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
 
 <!-- end auto-generated rule header -->
diff --git a/lib/configs/recommended.ts b/lib/configs/recommended.ts
index f7084db..3d0979e 100644
--- a/lib/configs/recommended.ts
+++ b/lib/configs/recommended.ts
@@ -2,32 +2,36 @@ export const plugins = ["regexp"]
 export const rules = {
     // ESLint core rules
     "no-control-regex": "error",
-    "no-empty-character-class": "error",
     "no-misleading-character-class": "error",
     "no-regex-spaces": "error",
     "prefer-regex-literals": "error",
     // The ESLint rule will report fewer cases than our rule
     "no-invalid-regexp": "off",
     "no-useless-backreference": "off",
-    // TODO Switch in the major version.
-    // "no-empty-character-class": "off",
+    "no-empty-character-class": "off",
 
     // eslint-plugin-regexp rules
     "regexp/confusing-quantifier": "warn",
     "regexp/control-character-escape": "error",
     "regexp/match-any": "error",
     "regexp/negation": "error",
+    "regexp/no-contradiction-with-assertion": "error",
     "regexp/no-dupe-characters-character-class": "error",
     "regexp/no-dupe-disjunctions": "error",
     "regexp/no-empty-alternative": "warn",
     "regexp/no-empty-capturing-group": "error",
+    "regexp/no-empty-character-class": "error",
     "regexp/no-empty-group": "error",
     "regexp/no-empty-lookarounds-assertion": "error",
     "regexp/no-escape-backspace": "error",
+    "regexp/no-extra-lookaround-assertions": "error",
     "regexp/no-invalid-regexp": "error",
     "regexp/no-invisible-character": "error",
     "regexp/no-lazy-ends": "warn",
     "regexp/no-legacy-features": "error",
+    "regexp/no-misleading-capturing-group": "error",
+    "regexp/no-misleading-unicode-character": "error",
+    "regexp/no-missing-g-flag": "error",
     "regexp/no-non-standard-flag": "error",
     "regexp/no-obscure-range": "error",
     "regexp/no-optional-assertion": "error",
@@ -61,4 +65,5 @@ export const rules = {
     "regexp/prefer-w": "error",
     "regexp/sort-flags": "error",
     "regexp/strict": "error",
+    "regexp/use-ignore-case": "error",
 }
diff --git a/lib/rules/no-contradiction-with-assertion.ts b/lib/rules/no-contradiction-with-assertion.ts
index c4a9afe..3484688 100644
--- a/lib/rules/no-contradiction-with-assertion.ts
+++ b/lib/rules/no-contradiction-with-assertion.ts
@@ -224,9 +224,7 @@ export default createRule("no-contradiction-with-assertion", {
         docs: {
             description: "disallow elements that contradict assertions",
             category: "Possible Errors",
-            // TODO Switch to recommended in the major version.
-            // recommended: true,
-            recommended: false,
+            recommended: true,
         },
         schema: [],
         messages: {
diff --git a/lib/rules/no-empty-character-class.ts b/lib/rules/no-empty-character-class.ts
index 6740df1..1bbcf9c 100644
--- a/lib/rules/no-empty-character-class.ts
+++ b/lib/rules/no-empty-character-class.ts
@@ -8,9 +8,7 @@ export default createRule("no-empty-character-class", {
         docs: {
             description: "disallow character classes that match no characters",
             category: "Possible Errors",
-            // TODO Switch to recommended in the major version.
-            // recommended: true,
-            recommended: false,
+            recommended: true,
         },
         schema: [],
         messages: {
diff --git a/lib/rules/no-extra-lookaround-assertions.ts b/lib/rules/no-extra-lookaround-assertions.ts
index 32144c5..4e325c2 100644
--- a/lib/rules/no-extra-lookaround-assertions.ts
+++ b/lib/rules/no-extra-lookaround-assertions.ts
@@ -8,9 +8,7 @@ export default createRule("no-extra-lookaround-assertions", {
         docs: {
             description: "disallow unnecessary nested lookaround assertions",
             category: "Best Practices",
-            // TODO Switch to recommended in the major version.
-            // recommended: true,
-            recommended: false,
+            recommended: true,
         },
         fixable: "code",
         schema: [],
diff --git a/lib/rules/no-misleading-capturing-group.ts b/lib/rules/no-misleading-capturing-group.ts
index 4cbffbe..fc051f0 100644
--- a/lib/rules/no-misleading-capturing-group.ts
+++ b/lib/rules/no-misleading-capturing-group.ts
@@ -266,9 +266,7 @@ export default createRule("no-misleading-capturing-group", {
             description:
                 "disallow capturing groups that do not behave as one would expect",
             category: "Possible Errors",
-            // TODO Switch to recommended in the major version.
-            // recommended: true,
-            recommended: false,
+            recommended: true,
         },
         hasSuggestions: true,
         schema: [
diff --git a/lib/rules/no-misleading-unicode-character.ts b/lib/rules/no-misleading-unicode-character.ts
index 79df86d..e85fbfc 100644
--- a/lib/rules/no-misleading-unicode-character.ts
+++ b/lib/rules/no-misleading-unicode-character.ts
@@ -171,9 +171,7 @@ export default createRule("no-misleading-unicode-character", {
             description:
                 "disallow multi-code-point characters in character classes and quantifiers",
             category: "Possible Errors",
-            // TODO Switch to recommended in the major version.
-            // recommended: true,
-            recommended: false,
+            recommended: true,
         },
         schema: [
             {
diff --git a/lib/rules/no-missing-g-flag.ts b/lib/rules/no-missing-g-flag.ts
index b91d2c0..c2f506f 100644
--- a/lib/rules/no-missing-g-flag.ts
+++ b/lib/rules/no-missing-g-flag.ts
@@ -35,9 +35,7 @@ export default createRule("no-missing-g-flag", {
             description:
                 "disallow missing `g` flag in patterns used in `String#matchAll` and `String#replaceAll`",
             category: "Possible Errors",
-            // TODO Switch to recommended in the major version.
-            // recommended: true,
-            recommended: false,
+            recommended: true,
         },
         fixable: "code",
         schema: [
diff --git a/lib/rules/use-ignore-case.ts b/lib/rules/use-ignore-case.ts
index 07449c0..ddb5534 100644
--- a/lib/rules/use-ignore-case.ts
+++ b/lib/rules/use-ignore-case.ts
@@ -117,9 +117,7 @@ export default createRule("use-ignore-case", {
         docs: {
             description: "use the `i` flag if it simplifies the pattern",
             category: "Best Practices",
-            // TODO Switch to recommended in the major version.
-            // recommended: true,
-            recommended: false,
+            recommended: true,
         },
         fixable: "code",
         schema: [],
diff --git a/tools/update-rulesets.ts b/tools/update-rulesets.ts
index c55c28f..0013d29 100644
--- a/tools/update-rulesets.ts
+++ b/tools/update-rulesets.ts
@@ -6,7 +6,6 @@ import { rules } from "./lib/load-rules"
 const coreRules = [
     // Possible Errors
     "no-control-regex",
-    "no-empty-character-class",
     "no-misleading-character-class",
     "no-regex-spaces",
     // Best Practices
@@ -22,8 +21,7 @@ export const rules = {
     // The ESLint rule will report fewer cases than our rule
     "no-invalid-regexp": "off",
     "no-useless-backreference": "off",
-    // TODO Switch in the major version.
-    // "no-empty-character-class": "off",
+    "no-empty-character-class": "off",
 
     // eslint-plugin-regexp rules
     ${rules


Test patch:
diff --git a/tests/lib/eslint-plugin.ts b/tests/lib/eslint-plugin.ts
index d3a281f..70bc313 100644
--- a/tests/lib/eslint-plugin.ts
+++ b/tests/lib/eslint-plugin.ts
@@ -35,6 +35,7 @@ describe("Integration with eslint-plugin-regexp", () => {
                 "regexp/prefer-w",
                 "regexp/prefer-d",
                 "regexp/prefer-d",
+                "regexp/use-ignore-case",
             ],
         )
     })