Шаблон регулярного выражения для символа Pilcrow (¶) или частичного дифференциала (∂)
Мне нужно найти / заменить или преобразовать символы pilcrow / частичного дифференциала в строке, поскольку они в настоящее время отображаются как .
То, что я думал, сработает, но не работает:
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/\u2029/gmi);
console.log(matches);
Но возвращается пустым.
Если честно, я даже не знаю, как добиться того, что мне нужно делать.
Ответы
Правильные кодовые точки Unicode - U + 00B6 и U + 2202 , а не U + 2029 . Вы также захотите использовать в выражении диапазон символов [] :
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/[\u00B6\u2202]/gmi);
console.log(matches);
Конечно, в первую очередь вам не нужны \ u escape-последовательности:
const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/[¶∂]/gmi);
console.log(matches);
И последнее, но не менее важное: вы говорите:
в настоящее время они отображаются как .
Если это так, очень вероятно, что он изначально неправильно закодирован. Другими словами, вы не найдете ¶
или ∂
потому что их там нет. Я предлагаю вам сначала заняться этим.
Используется String.prototype.codePointAtдля извлечения кодовой точки Unicode UTF-16 и преобразования ее в последовательность шестнадцатеричных цифр.
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);
Посмотрите на это очень красивое articleпроизведение Матиаса Биненса.
Вы можете найти их по шестнадцатеричному или восьмеричному значению:
const matches = value.match(/\u00B6|\u2202/g);
Регулярное выражение для каждого:
Pilcrow: \u00B6
или \xB6
или\266
Частный дифференциал: \u2202