Repository: JoshuaKGoldberg/create-typescript-app (ts)

Issue:
🐛 Bug: `eslint-plugin-regex` referenced instead of `eslint-plugin-regexp`
### Bug Report Checklist

- [X] I have pulled the latest `main` branch of the repository.
- [X] I have [searched for related issues](https://github.com/JoshuaKGoldberg/create-typescript-app/issues?q=is%3Aissue) and found none that matched my issue.

### Overview

I am currently reading through the docs to see if I can pick up anything new.

https://github.com/JoshuaKGoldberg/create-typescript-app/blob/8404b1dbe654ec90786eabd82a6196c90bf97771/docs/Tooling.md#lint-regex states that:

> [eslint-plugin-regex](https://github.com/gmullerb/eslint-plugin-regex): Detects issues with JavaScript regular expressions, such as potential exponential complexity.

https://github.com/gmullerb/eslint-plugin-regex allows files to be checked against regular expressions, and does not validate regular expressions. https://github.com/ota-meshi/eslint-plugin-regexp is the plugin that validates regular expressions.

### Additional Info

_No response_

Pull request:
fix: always refer to eslint-plugin-regexp
## PR Checklist

- [x] Addresses an existing open issue: fixes #1597
- [x] That issue was marked as [`status: accepting prs`](https://github.com/JoshuaKGoldberg/create-typescript-app/issues?q=is%3Aopen+is%3Aissue+label%3A%22status%3A+accepting+prs%22)
- [x] Steps in [CONTRIBUTING.md](https://github.com/JoshuaKGoldberg/create-typescript-app/blob/main/.github/CONTRIBUTING.md) were taken

## Overview

💖 

Patch:
diff --git a/docs/Options.md b/docs/Options.md
index 3402cad..79fd90f 100644
--- a/docs/Options.md
+++ b/docs/Options.md
@@ -96,7 +96,7 @@ Alternately, you can bypass that prompt by providing any number of the following
 - `--exclude-lint-jsdoc`: Don't use eslint-plugin-jsdoc to enforce good practices around JSDoc comments.
 - `--exclude-lint-packages`: Don't add a pnpm dedupe workflow to ensure packages aren't duplicated unnecessarily.
 - `--exclude-lint-perfectionist`: Don't apply eslint-plugin-perfectionist to ensure imports, keys, and so on are in sorted order.
-- `--exclude-lint-regex`: Don't add eslint-plugin-regex to enforce good practices around regular expressions.
+- `--exclude-lint-regexp`: Don't add eslint-plugin-regexp to enforce good practices around regular expressions.
 - `--exclude-lint-strict`: Don't augment the recommended logical lint rules with typescript-eslint's strict config.
 - `--exclude-lint-stylistic`: Don't add stylistic rules such as typescript-eslint's stylistic config.
 - `--exclude-lint-spelling`: Don't add cspell to spell check against dictionaries of known words.
diff --git a/docs/Tooling.md b/docs/Tooling.md
index 6a1a75a..983f806 100644
--- a/docs/Tooling.md
+++ b/docs/Tooling.md
@@ -31,7 +31,7 @@ This table summarizes each tooling piece and which base levels they're included
 | [Lint Package JSON](#lint-package-json)       | `--exclude-lint-package-json`  |         |        | 💯         |
 | [Lint Packages](#lint-packages)               | `--exclude-lint-packages`      |         |        | 💯         |
 | [Lint Perfectionist](#lint-perfectionist)     | `--exclude-lint-perfectionist` |         |        | 💯         |
-| [Lint Regex](#lint-regex)                     | `--exclude-lint-regex`         |         |        | 💯         |
+| [Lint Regexp](#lint-regexp)                   | `--exclude-lint-regexp`        |         |        | 💯         |
 | [Lint Spelling](#lint-spelling)               | `--exclude-lint-spelling`      |         |        | 💯         |
 | [Lint Strict](#lint-strict)                   | `--exclude-lint-strict`        |         |        | 💯         |
 | [Lint Stylistic](#lint-stylistic)             | `--exclude-lint-stylistic`     |         |        | 💯         |
@@ -226,7 +226,7 @@ Using the _"everything"_ level will gain you comprehensive, strict coverage of a
 - [Lint Package JSON](#lint-package-json)
 - [Lint Packages](#lint-packages)
 - [Lint Perfectionist](#lint-perfectionist)
-- [Lint Regex](#lint-regex)
+- [Lint Regexp](#lint-regexp)
 - [Lint Spelling](#lint-spelling)
 - [Lint Strict](#lint-strict)
 - [Lint Stylistic](#lint-stylistic)
@@ -277,9 +277,9 @@ pnpm lint:packages
 [`eslint-plugin-perfectionist`](https://eslint-plugin-perfectionist.azat.io): Lints for sorting properties, imports, etc.
 This plugin is quite particular -perfectionist, even- but all its rules include auto-fixers that can correct complaints for you.
 
-### Lint Regex
+### Lint Regexp
 
-[`eslint-plugin-regex`](https://github.com/gmullerb/eslint-plugin-regex): Detects issues with JavaScript regular expressions, such as potential exponential complexity.
+[`eslint-plugin-regexp`](https://github.com/ota-meshi/eslint-plugin-regexp): Detects issues with JavaScript regular expressions, such as potential exponential complexity.
 
 ### Lint Spelling
 
diff --git a/src/shared/options/args.ts b/src/shared/options/args.ts
index 55ee8c3..670197e 100644
--- a/src/shared/options/args.ts
+++ b/src/shared/options/args.ts
@@ -131,8 +131,8 @@ export const allArgOptions = {
 		docsSection: "opt-out",
 		type: "boolean",
 	},
-	"exclude-lint-regex": {
-		description: `Don't add eslint-plugin-regex to enforce good practices around 
+	"exclude-lint-regexp": {
+		description: `Don't add eslint-plugin-regexp to enforce good practices around 
   regular expressions.`,
 		docsSection: "opt-out",
 		type: "boolean",
diff --git a/src/shared/options/exclusionKeys.ts b/src/shared/options/exclusionKeys.ts
index 013d117..8d3b034 100644
--- a/src/shared/options/exclusionKeys.ts
+++ b/src/shared/options/exclusionKeys.ts
@@ -70,10 +70,10 @@ export const exclusionDescriptions: Record<ExclusionKey, ExclusionDescription> =
 				"Apply eslint-plugin-perfectionist to ensure imports, keys, and so on are in sorted order.",
 			level: "common",
 		},
-		excludeLintRegex: {
-			hint: "--exclude-lint-regex",
+		excludeLintRegexp: {
+			hint: "--exclude-lint-regexp",
 			label:
-				"Include eslint-plugin-regex to enforce good practices around regular expressions.",
+				"Include eslint-plugin-regexp to enforce good practices around regular expressions.",
 			level: "common",
 		},
 		excludeLintSpelling: {
diff --git a/src/shared/options/optionsSchema.ts b/src/shared/options/optionsSchema.ts
index 36c3abc..3ac1aa7 100644
--- a/src/shared/options/optionsSchema.ts
+++ b/src/shared/options/optionsSchema.ts
@@ -32,7 +32,7 @@ export const optionsSchemaShape = {
 	excludeLintPackageJson: z.boolean().optional(),
 	excludeLintPackages: z.boolean().optional(),
 	excludeLintPerfectionist: z.boolean().optional(),
-	excludeLintRegex: z.boolean().optional(),
+	excludeLintRegexp: z.boolean().optional(),
 	excludeLintSpelling: z.boolean().optional(),
 	excludeLintStrict: z.boolean().optional(),
 	excludeLintStylistic: z.boolean().optional(),
diff --git a/src/shared/options/readOptions.ts b/src/shared/options/readOptions.ts
index 20341bf..4cef1a4 100644
--- a/src/shared/options/readOptions.ts
+++ b/src/shared/options/readOptions.ts
@@ -77,7 +77,7 @@ export async function readOptions(
 		excludeLintPackageJson: values["exclude-lint-package-json"],
 		excludeLintPackages: values["exclude-lint-packages"],
 		excludeLintPerfectionist: values["exclude-lint-perfectionist"],
-		excludeLintRegex: values["exclude-lint-regex"],
+		excludeLintRegexp: values["exclude-lint-regexp"],
 		excludeLintSpelling: values["exclude-lint-spelling"],
 		excludeLintStrict: values["exclude-lint-strict"],
 		excludeLintYml: values["exclude-lint-yml"],
diff --git a/src/shared/types.ts b/src/shared/types.ts
index d0be361..2ea042f 100644
--- a/src/shared/types.ts
+++ b/src/shared/types.ts
@@ -71,7 +71,7 @@ export interface Options {
 	excludeLintPackageJson?: boolean;
 	excludeLintPackages?: boolean;
 	excludeLintPerfectionist?: boolean;
-	excludeLintRegex?: boolean;
+	excludeLintRegexp?: boolean;
 	excludeLintSpelling?: boolean;
 	excludeLintStrict?: boolean;
 	excludeLintStylistic?: boolean;
diff --git a/src/steps/finalizeDependencies.ts b/src/steps/finalizeDependencies.ts
index cf127a9..de8b993 100644
--- a/src/steps/finalizeDependencies.ts
+++ b/src/steps/finalizeDependencies.ts
@@ -38,7 +38,7 @@ export async function finalizeDependencies(options: Options) {
 		...(options.excludeLintPerfectionist
 			? []
 			: ["eslint-plugin-perfectionist"]),
-		...(options.excludeLintRegex ? [] : ["eslint-plugin-regexp"]),
+		...(options.excludeLintRegexp ? [] : ["eslint-plugin-regexp"]),
 		...(options.excludeLintSpelling ? [] : ["cspell"]),
 		...(options.excludeLintYml ? [] : ["eslint-plugin-yml"]),
 		...(options.excludeReleases
diff --git a/src/steps/writing/creation/createESLintConfig.ts b/src/steps/writing/creation/createESLintConfig.ts
index a640cf0..a7891d5 100644
--- a/src/steps/writing/creation/createESLintConfig.ts
+++ b/src/steps/writing/creation/createESLintConfig.ts
@@ -17,7 +17,7 @@ export async function createESLintConfig(options: Options) {
 			`import packageJson from "eslint-plugin-package-json/configs/recommended";`,
 		!options.excludeLintPerfectionist &&
 			`import perfectionist from "eslint-plugin-perfectionist";`,
-		!options.excludeLintRegex &&
+		!options.excludeLintRegexp &&
 			`import * as regexp from "eslint-plugin-regexp";`,
 		!options.excludeLintYml && `import yml from "eslint-plugin-yml";`,
 		`import tseslint from "typescript-eslint";`,
@@ -36,7 +36,7 @@ export async function createESLintConfig(options: Options) {
 		!options.excludeLintPackageJson && `	packageJson,`,
 		!options.excludeLintPerfectionist &&
 			`	perfectionist.configs["recommended-natural"],`,
-		!options.excludeLintRegex && `	regexp.configs["flat/recommended"],`,
+		!options.excludeLintRegexp && `	regexp.configs["flat/recommended"],`,
 	].filter(Boolean);
 
 	const ignores = [


Test patch:
diff --git a/src/bin/help.test.ts b/src/bin/help.test.ts
index b6fe1c7..42f0965 100644
--- a/src/bin/help.test.ts
+++ b/src/bin/help.test.ts
@@ -249,7 +249,7 @@ describe("logHelpText", () => {
 			  ],
 			  [
 			    "
-			  --exclude-lint-regex: Don't add eslint-plugin-regex to enforce good practices around 
+			  --exclude-lint-regexp: Don't add eslint-plugin-regexp to enforce good practices around 
 			  regular expressions.",
 			  ],
 			  [
diff --git a/src/shared/options/augmentOptionsWithExcludes.test.ts b/src/shared/options/augmentOptionsWithExcludes.test.ts
index 75dd924..ed95d13 100644
--- a/src/shared/options/augmentOptionsWithExcludes.test.ts
+++ b/src/shared/options/augmentOptionsWithExcludes.test.ts
@@ -37,7 +37,7 @@ const optionsBase = {
 	excludeLintPackageJson: undefined,
 	excludeLintPackages: undefined,
 	excludeLintPerfectionist: undefined,
-	excludeLintRegex: undefined,
+	excludeLintRegexp: undefined,
 	excludeLintSpelling: undefined,
 	excludeLintStrict: undefined,
 	excludeLintStylistic: undefined,
@@ -96,7 +96,7 @@ describe("augmentOptionsWithExcludes", () => {
 			excludeLintPackageJson: true,
 			excludeLintPackages: true,
 			excludeLintPerfectionist: true,
-			excludeLintRegex: true,
+			excludeLintRegexp: true,
 			excludeLintSpelling: true,
 			excludeLintStrict: true,
 			excludeLintStylistic: true,
@@ -137,7 +137,7 @@ describe("augmentOptionsWithExcludes", () => {
 			excludeLintPackageJson: true,
 			excludeLintPackages: true,
 			excludeLintPerfectionist: true,
-			excludeLintRegex: true,
+			excludeLintRegexp: true,
 			excludeLintSpelling: true,
 			excludeLintStrict: true,
 			excludeLintStylistic: true,
@@ -165,7 +165,7 @@ describe("augmentOptionsWithExcludes", () => {
 			excludeLintPackageJson: true,
 			excludeLintPackages: true,
 			excludeLintPerfectionist: true,
-			excludeLintRegex: true,
+			excludeLintRegexp: true,
 			excludeLintSpelling: true,
 			excludeLintStrict: true,
 			excludeLintStylistic: true,
diff --git a/src/shared/options/readOptions.test.ts b/src/shared/options/readOptions.test.ts
index 306d6cb..e9c741b 100644
--- a/src/shared/options/readOptions.test.ts
+++ b/src/shared/options/readOptions.test.ts
@@ -25,7 +25,7 @@ const emptyOptions = {
 	excludeLintPackageJson: undefined,
 	excludeLintPackages: undefined,
 	excludeLintPerfectionist: undefined,
-	excludeLintRegex: undefined,
+	excludeLintRegexp: undefined,
 	excludeLintSpelling: undefined,
 	excludeLintStrict: undefined,
 	excludeLintYml: undefined,
@@ -809,7 +809,7 @@ describe("readOptions", () => {
 			      "excludeLintPackageJson": undefined,
 			      "excludeLintPackages": undefined,
 			      "excludeLintPerfectionist": undefined,
-			      "excludeLintRegex": undefined,
+			      "excludeLintRegexp": undefined,
 			      "excludeLintSpelling": undefined,
 			      "excludeLintStrict": undefined,
 			      "excludeLintYml": undefined,
diff --git a/src/steps/writing/creation/createESLintConfig.test.ts b/src/steps/writing/creation/createESLintConfig.test.ts
index 0b2e5fd..27c8e3c 100644
--- a/src/steps/writing/creation/createESLintConfig.test.ts
+++ b/src/steps/writing/creation/createESLintConfig.test.ts
@@ -26,7 +26,7 @@ function fakeOptions(getExcludeValue: (exclusionName: string) => boolean) {
 				"excludeLintPackageJson",
 				"excludeLintPackages",
 				"excludeLintPerfectionist",
-				"excludeLintRegex",
+				"excludeLintRegexp",
 				"excludeLintSpelling",
 				"excludeLintStrict",
 				"excludeLintStylistic",
diff --git a/src/steps/writing/creation/dotVSCode.test.ts b/src/steps/writing/creation/dotVSCode.test.ts
index cbd9172..482f1b5 100644
--- a/src/steps/writing/creation/dotVSCode.test.ts
+++ b/src/steps/writing/creation/dotVSCode.test.ts
@@ -31,7 +31,7 @@ function fakeOptions(
 				"excludeLintPackageJson",
 				"excludeLintPackages",
 				"excludeLintPerfectionist",
-				"excludeLintRegex",
+				"excludeLintRegexp",
 				"excludeLintSpelling",
 				"excludeLintStrict",
 				"excludeLintStylistic",