Modello Regex per carattere Pilcrow (¶) o differenziale parziale (∂)
Devo trovare trovare / sostituire o convertire i caratteri pilcrow / differenziali parziali in una stringa come attualmente mostrano come .
Quello che pensavo avrebbe funzionato ma non funziona:
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/\u2029/gmi);
console.log(matches);
Ma ritorna vuoto.
Ad essere onesti, non sono nemmeno sicuro di come ottenere ciò che devo fare.
Risposte
I punti di codice Unicode corretti sono U + 00B6 e U + 2202 , non U + 2029 . Dovrai anche utilizzare un intervallo di caratteri [] nella tua espressione:
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/[\u00B6\u2202]/gmi);
console.log(matches);
Ovviamente, non hai davvero bisogno di \ u escape in primo luogo:
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/[¶∂]/gmi);
console.log(matches);
Ultimo ma non meno importante, dici:
attualmente vengono visualizzati come .
In tal caso, è molto probabile che non sia codificato correttamente per cominciare. In altre parole, non troverai ¶
o ∂
perché non ci sono. Ti suggerisco di affrontare prima questo.
Utilizzare String.prototype.codePointAtper estrarre il punto di codice Unicode UTF-16 e convertirlo in una sequenza di cifre esadecimali.
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);
Vedi questo molto carino articledi Mathias Bynens.
Puoi trovarli per valore esadecimale o ottale:
const matches = value.match(/\u00B6|\u2202/g);
Regex per ciascuno:
Pilcrow: \u00B6
o \xB6
o\266
Differenziale parziale: \u2202