JSFiddle - React, Tailwind, and code Playground

JavaScript

var htmlString = '<html><body> <div class="page"> Custom table example <customTable name="customArray" fields="[\"name\"]" /> </div></body> </html>';

var customArray = [{
	name : "Name 1"
}, {
	name : "Name 2"
}, {
  name : "Name 3"
}];

var customArrays = {
	customArray: customArray
};

var customTableRegex = /<customTable .* \/>/gm;
var arrayNameRegex = /name="\S*"/gm;
var fieldsRegex = /fields=".*"/gm

function createTable(arrayName, fields){
	var table = '<table>';
  var currentArray = customArrays[arrayName];
  
  for (var i = 0, iMax = currentArray.length; i < iMax; i++){
  	table += '<tr>';
    for (var j = 0, jMax = fields.length; j < jMax; j++){
    	table += '<td>' + currentArray[i][fields[j]] + '</td>';      
    }
    table += '</tr>';
  }
  
  table += '</table>';
  
  console.log('Created table : ', table);
  
  return table;
}

function replaceByTable(match){
	console.log(match);
  var arrayName = arrayNameRegex.exec(match);
  arrayName = arrayName[0].substring('name="'.length, arrayName[0].length -1);
  
  var fields = fieldsRegex.exec(match);
  fields = JSON.parse(fields[0].substring('fields="'.length, fields[0].length-1));
  
  console.log('Array name : ',arrayName);
  console.log('Fields : ', fields);
  
	return createTable(arrayName, fields);
}

htmlString = htmlString.replace(customTableRegex, replaceByTable);

console.log('Final HTML : ', htmlString);