JSFiddle - React, Tailwind, and code Playground
HTML
<p id="output1"></p>
<p id="output2"></p>
<p id="output3"></p>
JavaScript
var str = "ab";
// Place initial string in dom
document.getElementById('output1').innerHTML = str + " ("+str.length+")"; // expected: ab (3)
var ranges = ['[\u0020-\u007F]',
'[\u00A0-\u00FF]',
'[\u0100-\u017F]',
'[\u0180-\u024F]',
'[\u02B0-\u02FF]',
'[\u0370-\u03FF]',
'[\u1D00-\u1D7F]',
'[\u1E00-\u1EFF]',
'[\u20A0-\u20CF]',
'[\u2150-\u218F]',
'[\u2190-\u21FF]'].join('|');
var regex = new RegExp('(?!(' + ranges + '))', 'g');
// First round, replace with something visible
str = str.replace(regex, '\u2327');
document.getElementById('output2').innerHTML = str + " ("+str.length+")";// expected: a⌧b⌧ (5)
// No replace with empty string
str = str.replace(/\u2327/g, '');
document.getElementById('output3').innerHTML = str + " ("+str.length+")";// expected: ab (2)