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