function sta(input) {
const invisibleCharRegex = /[\u0000-\u001F\u007F-\u009F\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/g;
const whiteCharRegex = /[\n]/;
return input.replace(invisibleCharRegex, (match) => {
if (whiteCharRegex.test(match)) return match;
let code = match.charCodeAt(0).toString(16).toUpperCase();
return `\x1b[${getColor(1,0)}m[\x1b[${getColor(1)}m${code.length >= 3 ? `\\u${code.padStart(4, '0')}` : `\\x${code.padStart(2, '0')}`}\x1b[${getColor(1,0)}m]\x1b[0m`;
});
}
第一个表达式就是黑名单的字符,第2个是白名单
然后就可以转义成这样子:
转义测试,如果你看见下面没有内容,代表转义不成功
[0m

不转义遇到 Beep 等字符或者冒充提示内容就老实了(