Regex-Muster für Pilcrow- (¶) oder Partial Differential- (∂) Zeichen

Aug 19 2020

Ich muss Pilcrow- / partielle Differentialzeichen in einer Zeichenfolge finden / ersetzen oder konvertieren, wie sie derzeit als angezeigt werden.

Was ich dachte, würde funktionieren, aber nicht:

const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/\u2029/gmi);
console.log(matches);

Kommt aber leer zurück.

Um ehrlich zu sein, bin ich mir nicht einmal sicher, wie ich das erreichen soll, was ich tun muss.

Antworten

5 ÁlvaroGonzález Aug 19 2020 at 21:16

Die korrekten Unicode-Codepunkte sind U + 00B6 und U + 2202 , nicht U + 2029 . Sie möchten auch einen [] Zeichenbereich in Ihrem Ausdruck verwenden:

const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/[\u00B6\u2202]/gmi);
console.log(matches);

Natürlich brauchen Sie überhaupt keine Fluchtwege:

const value = 'Javascript Regex pattern for Pilcrow (¶) or Partial Differential (∂) character';
const matches = value.match(/[¶∂]/gmi);
console.log(matches);

Zu guter Letzt sagen Sie:

Sie werden derzeit als angezeigt.

Wenn dies der Fall ist, ist es sehr wahrscheinlich, dass es zunächst nicht richtig codiert ist. Mit anderen Worten, Sie werden es nicht finden oder weil sie nicht da sind. Ich schlage vor, Sie sprechen dies zuerst an.

3 KunalMukherjee Aug 19 2020 at 20:34

Verwenden Sie String.prototype.codePointAtdiese Option, um den Unicode-UTF-16-Codepunkt zu extrahieren und in eine hexadezimale Ziffernfolge umzuwandeln.

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);

Sehen Sie das sehr schön articlevon Mathias Bynens.

1 JordanStubblefield Aug 19 2020 at 20:55

Sie können sie nach Hex- oder Oktalwert finden:

const matches = value.match(/\u00B6|\u2202/g);

Regex für jeden:

Pilcrow: \u00B6oder \xB6oder\266

Partielles Differential: \u2202