Вы можете сделать что-то вроде этого:
"1234567890".match(/.{1,2}/g);
// Results in:
["12", "34", "56", "78", "90"]
Метод по-прежнему будет работать со строками, размер которых не является точным кратным размеру куска:
"123456789".match(/.{1,2}/g);
// Results in:
["12", "34", "56", "78", "9"]
В общемдля любой строки, из которой вы хотите извлечь не более n размерных подстрок, вы должны сделать:
str.match(/.{1,n}/g); // Replace n with the size of the substring
Если ваша строка может содержать переводы строки или возврат каретки, вы быdo:
str.match(/(.|[\r\n]){1,n}/g); // Replace n with the size of the substring
Что касается производительности, я опробовал это примерно с 10 тыс. символов, и это заняло чуть больше секунды в Chrome.YMMV.
Это также можно использовать в функции многократного использования:
function chunkString(str, length) {
return str.match(new RegExp('.{1,' + length + '}', 'g'));
}