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