diff --git a/packages/runtime-core/src/components/KeepAlive.ts b/packages/runtime-core/src/components/KeepAlive.ts index 66d0f82a10e..554b9f2451c 100644 --- a/packages/runtime-core/src/components/KeepAlive.ts +++ b/packages/runtime-core/src/components/KeepAlive.ts @@ -26,6 +26,7 @@ import { import { isString, isArray, + isRegExp, ShapeFlags, remove, invokeArrayFns @@ -350,7 +351,7 @@ function matches(pattern: MatchPattern, name: string): boolean { return pattern.some((p: string | RegExp) => matches(p, name)) } else if (isString(pattern)) { return pattern.split(',').includes(name) - } else if (pattern.test) { + } else if (isRegExp(pattern)) { return pattern.test(name) } /* istanbul ignore next */ diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 8e3020f9e37..ff302503819 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -54,6 +54,8 @@ export const isSet = (val: unknown): val is Set => export const isDate = (val: unknown): val is Date => toTypeString(val) === '[object Date]' +export const isRegExp = (val: unknown): val is RegExp => + toTypeString(val) === '[object RegExp]' export const isFunction = (val: unknown): val is Function => typeof val === 'function' export const isString = (val: unknown): val is string => typeof val === 'string'