Pilcrow (¶) 또는 부분 미분 (∂) 문자에 대한 정규식 패턴

Aug 19 2020

현재 로 표시되는 문자열에서 pilcrow / 부분 차등 문자를 찾거나 바꾸거나 변환해야합니다.

내가 생각했지만 작동하지 않는 것 :

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

그러나 비어 있습니다.

솔직히 말해서 내가해야 할 일을 어떻게 성취해야할지조차 모르겠습니다.

답변

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

올바른 유니 코드 코드 포인트는 U + 2029가 아니라 U + 00B6 및 U + 2202 입니다. 표현식에서 [] 문자 범위 를 사용할 수도 있습니다 .

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

물론 처음부터 \ u 이스케이프가 필요하지는 않습니다.

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

마지막으로 다음과 같이 말합니다.

현재 로 표시됩니다.

이 경우 시작하기에 제대로 인코딩되지 않았을 가능성이 큽니다. 즉, 찾을 수 없거나 거기에 없기 때문입니다. 이 문제를 먼저 해결하는 것이 좋습니다.

3 KunalMukherjee Aug 19 2020 at 20:34

사용은 String.prototype.codePointAt유니 코드 UTF-16 코드 포인트를 추출하고 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);

articleMathias Bynens의 멋진 작품을보세요.

1 JordanStubblefield Aug 19 2020 at 20:55

16 진수 또는 8 진수 값으로 찾을 수 있습니다.

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

각각에 대한 정규식 :

Pilcrow : \u00B6또는 \xB6또는\266

부분 차동 : \u2202