我需要区分字符串和RegExp字符串之间的传入值。
我的第一次尝试是这样的:
myMethod(value: string | RegExp): boolean {
let pattern: RegExp;
if (value instanceof RegExp) {
pattern = value;
} else {
pattern = new RegExp(`^${value}$`);
}
return this.#myString.match(pattern) !== null;
}
传入的值也可以是0|1
、myString
、\d\d\d\d
、^\w .*
或(0[1-9]|1[012])[.](19|20)\\d\\d
。
在我的方法中,这些都被认为是字符串而不是RegExp,我错过了什么?
1条答案
按热度按时间2ul0zpep1#
该定义
myMethod(value: string | RegExp): boolean
表示value
可以是字符串或RegExp类的示例。您可以通过两种不同的方式创建RegExp的示例:
1.// /
1.新建正则表达式("模式")
请注意,"^a *"、"^a "和"^${a}"都是字符串,因此不会仅仅因为它们具有RegExp的某些特征就将其视为RegExp的示例
下面是一个示例