Patrón de expresiones regulares para el carácter Pilcrow (¶) o diferencial parcial (∂)
Necesito encontrar buscar / reemplazar o convertir pilcrow / caracteres diferenciales parciales en una cadena como se muestran actualmente como .
Lo que pensé que funcionaría pero no lo hace:
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/\u2029/gmi);
console.log(matches);
Pero vuelve vacío.
Para ser honesto, ni siquiera estoy seguro de cómo lograr lo que necesito hacer.
Respuestas
Los puntos de código Unicode correctos son U + 00B6 y U + 2202 , no U + 2029 . También querrá usar un rango de caracteres [] en su expresión:
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/[\u00B6\u2202]/gmi);
console.log(matches);
Por supuesto, realmente no necesitas \ u escapes en primer lugar:
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/[¶∂]/gmi);
console.log(matches);
Por último, pero no menos importante, dices:
actualmente se muestran como .
Si ese es el caso, es muy probable que no esté codificado correctamente para empezar. En otras palabras, no encontrarás ¶
o ∂
porque no están. Le sugiero que aborde esto primero.
Úselo String.prototype.codePointAtpara extraer el punto de código Unicode UTF-16 y convertirlo en una secuencia de dígitos hexadecimales.
const toUnicodeCodePointHex = (str) => {
const codePoint = str.codePointAt(0).toString(16);
return '\\u' + '0000'.substring(0, 4 - codePoint.length) + codePoint;
};
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const re = new RegExp(['¶', '∂'].map((item) => toUnicodeCodePointHex(item)).join('|'), 'ig');
const matches = value.match(re);
console.log(matches);
Mira esto muy bonito articlede Mathias Bynens.
Puede encontrarlos por valor hexadecimal u octal:
const matches = value.match(/\u00B6|\u2202/g);
Regex para cada uno:
Pilcrow: \u00B6
o \xB6
o\266
Diferencial parcial: \u2202