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