Tratando de hacer una excepción con todos los caracteres que se han convertido en letras normales.
txtValue.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
Como puede ver, reemplacé todos los caracteres especiales por letras normales, pero ahora me gustaría agregar una excepción para el carácter "ç" y su equivalente en mayúscula "Ç", que son u00e7 y u00c7 respectivamente.
La única forma simple que veo no está optimizada pero hace el trabajo correctamente:
const text = "Çééé éÇé àç" // test this string .replace(/\u00e7/g, '__minC__') // save wanted chars position .replace(/\u00c7/g, '__majC__') .normalize('NFD') // normalize to prepare diacritic edit .replace(/\p{Diacritic}/gu, '') // replace all diacritics .replace(/__minC__/g, 'ç') // restore wanted chars .replace(/__majC__/g, 'Ç') console.log(text) En este caso usamos \p{Diacritic} de Unicode Property Escapes