我正在节点中创建一个程序包以解析和处理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/