我正在节点中创建一个程序包以解析和处理csv,并且需要使用String.matchAll(),但出现错误消息str.matchAll is not a function。我尝试切换到str.match()并遇到相同的错误。我试图分别console.log和返回未定义。我在Visual Studio代码Powershell中键入node -v,它弹出了v10.16.3

我的密码

fs = require('fs');

class Table {
    //the function I needed it for
    removeRow(header, value){
        let regLine = "";
        for(let i=0; i<this.colArr.length; i++){
            if (this.colArr[i][0]==header){
                regLine+=value+",";
            }else{
                regLine+=".*,"
            }
        }
        regLine = "\n"+regLine.substring(0,regLine.length-2)+"\n";
        let regex = new RegExp(regLine);

        let removed = this.text.matchAll(regex);//this line
        let newText = this.text.replace(regex,"\n");
        fs.writeFile(this.link, newText);
        this.update();
        return removed;
    }
}


在标出的行,它抛出错误this.text is not a function我console.logged typeof(this.text)并给出了字符串,所以我不知道发生了什么

最佳答案

String.matchAll仅从Node.js 12.0起可用(请参见此处的兼容性:string.matchAll)。

但是String.match应该可以从早期版本的Node.js中获得。

这是我在操作中创建的示例(节点v10.16.0):https://repl.it/repls/PunctualRareHypotenuse

我建议也确保所讨论的对象是字符串,以确保确定!

另外,如果您很容易升级,请尝试安装Node.js 12

码:



var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var regexp = /[A-E]/g;
var matches_array = str.match(regexp);

console.log(matches_array);

关于javascript - String.matchAll未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58558257/

10-12 00:54