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 returnnull
when 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) || []);