JSFiddle - React, Tailwind, and code Playground
by slove
HTML
<div id="console"></div>
JavaScript
var regexSurrogatePair = /([\uD800-\uDBFF])([\uDC00-\uDFFF])/g;
var regexSurrogateStart = /[\uD800-\uDBFF]/; // '𝌆'.split('')[0].match(regexSurrogateStart) -> true
var regexSurrogateEnd = /[\uDC00-\uDFFF]/;
function reverse(someString) {
var result = someString.split("").reverse();
var i = 0;
while (i < result.length) {
if (regexSurrogateEnd.test(result[i]) && regexSurrogateStart.test(result[i + 1])) {
swap(result, i, i+1);
}
}
return result.join("");
}
var output = reverse('foo𝌆bar');
//'foo \uD834\uDF06 bar' // [r,a,b,\uDF06,\uD834,o,o,f]
// [r,a,b,\uD834,\uDF06,o,o,f]
$('#console').text(output);
console.log(output);