Javascript 正则表达式 matchAll 函数不起作用

Pau*_*mor 1 javascript regex

每当我运行下面的代码时,我都会收到错误TypeError: responseData.matchAll is not a function

    var responseData = response.data.toString(); 
    var regex = new RegExp('(<dbname>)(.*?)(?=<\/dbname>)', 'g'); 

    var matches = responseData.matchAll(regex);
    
Run Code Online (Sandbox Code Playgroud)

当我替换matchAll它时,exec它起作用了!但是,我需要使用matchAll. 这真让我抓狂。谢谢

Rys*_*ech 5

如果您需要matchAll,请在支持的情况下使用它:

var responseData = "<dbname>hhh</dbname>hhh<dbname>hhh3</dbname>"; 
var regex = new RegExp('<dbname>(.*?)(?=</dbname>)', 'g'); 
console.log(Array.from(responseData.matchAll(regex), x=>x[1]));
// => ["hhh","hhh3"]
   
Run Code Online (Sandbox Code Playgroud)

您还可以使用exec

var responseData = "<dbname>hhh</dbname>hhh<dbname>hhh3</dbname>"; 
var regex = new RegExp('<dbname>(.*?)(?=</dbname>)', 'g'); 
while(match=regex.exec(responseData)){
  console.log(match[1]);
}
Run Code Online (Sandbox Code Playgroud)

  • @PaulTrimor 这就是为什么它位于“while”块中。 (3认同)