[英]TypeScript - matchAll() function not working
我正在开发 VS Code 扩展,我需要获取一行(字符串)中所有出现的起始索引。 例如,字符串可能如下所示:
let str = "Timei = Time / Day / Time";
并且,我试图用这个正则表达式匹配所有出现的Time
:
let re = new RegExp("\\bTime\\b");
我尝试使用matchAll
函数,以检查其输出:
console.log(str.matchAll(re));
最初,我收到此错误:
Property 'matchAll' does not exist on type 'string'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2020' or later.
于是,我打开了tsconfig.json
并更新了它(目标库最初是es2019
):
{
"compilerOptions": {
...
"target": "es2020",
"lib": ["ES2020"],
...
},
...
}
做了这个小小的改变后,错误现在消失了,但我没有得到任何输出到控制台。 此外,我使用matchAll
的行似乎打破了 TypeScript 逻辑; 但是,没有显示错误消息让我查看代码有什么问题。
我该如何解决这个问题?
matchAll需要一个全局正则表达式作为参数:
RegExp 对象必须具有 /g 标志,否则将抛出 TypeError。
尝试将您的正则表达式替换为:
let re = new RegExp("\\bTime\\b", "g");
或一个普通的正则表达式字符串:
let re = /\bTime\b/g;
除了需要g
标志外, matchAll
返回一个迭代器,因此请尝试,例如
console.log(...str.matchAll(re));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.