var str="abcdefghijkl";
console.log(str.match(/.{1,3}/g));
Note: Use {1,3} instead of just {3} to include the remainder for string lengths that aren’t a multiple of 3, e.g:
console.log("abcd".match(/.{1,3}/g)); // ["abc", "d"]
A couple more subtleties:
- If your string may contain newlines (which you want to count as a character rather than splitting the string), then the
.won’t capture those. Use/[\s\S]{1,3}/instead. (Thanks @Mike). - If your string is empty, then
match()will returnnullwhen you may be expecting an empty array. Protect against this by appending|| [].
So you may end up with:
var str="abcdef \t\r\nghijkl";
var parts = str.match(/[\s\S]{1,3}/g) || [];
console.log(parts);
console.log(''.match(/[\s\S]{1,3}/g) || []);