繁体   English   中英

TypeScript - matchAll() 函数不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM