index.js 590 B

1234567891011121314
  1. export default function ansiRegex({onlyFirst = false} = {}) {
  2. // Valid string terminator sequences are BEL, ESC\, and 0x9c
  3. const ST = '(?:\\u0007|\\u001B\\u005C|\\u009C)';
  4. // OSC sequences only: ESC ] ... ST (non-greedy until the first ST)
  5. const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
  6. // CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte
  7. const csi = '[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]';
  8. const pattern = `${osc}|${csi}`;
  9. return new RegExp(pattern, onlyFirst ? undefined : 'g');
  10. }