Home > Software design >  Regex positive lookbehind alternative for word wrap
Regex positive lookbehind alternative for word wrap

Time:07-19

I'm using regex in JavaScript to split a long string and force a word wrap, but learned that some browsers (Safari in particular) don't support positive lookbehinds. Is there a more browser-friendly way to get the same result as this:

  if (text.length > 45) {
    return text.split(/(?<=^(?:.{45}) )(?!$)/).join("\r\n");
  }

CodePudding user response:

Use

return text.replace(/(.{45})(?!$)/g, "$1\r\n");

See regex proof.

EXPLANATION

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    .{45}                    any character except \n (45 times)
--------------------------------------------------------------------------------
  )                        end of \1
--------------------------------------------------------------------------------
  (?!                      look ahead to see if there is not:
--------------------------------------------------------------------------------
    $                        before an optional \n, and the end of
                             the string
--------------------------------------------------------------------------------
  )                        end of look-ahead
  • Related