Modèle Regex pour le caractère Pilcrow (¶) ou Partial Differential (∂)
J'ai besoin de trouver / remplacer ou convertir les caractères différentiels pilcrow / partiels dans une chaîne comme ils apparaissent actuellement comme .
Ce que je pensais fonctionnerait mais ne fonctionne pas:
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/\u2029/gmi);
console.log(matches);
Mais retourne vide.
Pour être honnête, je ne sais même pas comment réaliser ce que je dois faire.
Réponses
Les points de code Unicode corrects sont U + 00B6 et U + 2202 , et non U + 2029 . Vous souhaiterez également utiliser une plage de caractères [] dans votre expression:
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/[\u00B6\u2202]/gmi);
console.log(matches);
Bien sûr, vous n’avez pas vraiment besoin d’échappées \ u en premier lieu:
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/[¶∂]/gmi);
console.log(matches);
Dernier point mais non le moindre, vous dites:
ils s'affichent actuellement comme .
Si tel est le cas, il est très probable qu'il ne soit pas correctement encodé pour commencer. En d'autres termes, vous ne trouverez pas ¶
ou ∂
parce qu'ils ne sont pas là. Je vous suggère d'aborder cette question.
Utilisez String.prototype.codePointAtpour extraire le point de code Unicode UTF-16 et le convertir en séquence de chiffres hexadécimaux.
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);
Voir ce très joli articlepar Mathias Bynens.
Vous pouvez les trouver par valeur hexadécimale ou octale:
const matches = value.match(/\u00B6|\u2202/g);
Regex pour chacun:
Pilcrow: \u00B6
ou \xB6
ou\266
Différentiel partiel: \u2202