diff --git a/packages/next/shared/lib/router/utils/route-regex.ts b/packages/next/shared/lib/router/utils/route-regex.ts index a3a24dc755b05ed..ca26d12a1e1f9e6 100644 --- a/packages/next/shared/lib/router/utils/route-regex.ts +++ b/packages/next/shared/lib/router/utils/route-regex.ts @@ -1,15 +1,11 @@ +import { escapeStringRegexp } from '../../escape-regexp' + interface Group { pos: number repeat: boolean optional: boolean } -// this isn't importing the escape-string-regex module -// to reduce bytes -function escapeRegex(str: string) { - return str.replace(/[|\\{}()[\]^$+*?.-]/g, '\\$&') -} - function parseParameter(param: string) { const optional = param.startsWith('[') && param.endsWith(']') if (optional) { @@ -34,7 +30,7 @@ export function getParametrizedRoute(route: string) { groups[key] = { pos: groupIndex++, repeat, optional } return repeat ? (optional ? '(?:/(.+?))?' : '/(.+?)') : '/([^/]+?)' } else { - return `/${escapeRegex(segment)}` + return `/${escapeStringRegexp(segment)}` } }) .join('') @@ -92,7 +88,7 @@ export function getParametrizedRoute(route: string) { : `/(?<${cleanedKey}>.+?)` : `/(?<${cleanedKey}>[^/]+?)` } else { - return `/${escapeRegex(segment)}` + return `/${escapeStringRegexp(segment)}` } }) .join('')