例如,我有一个字符串:
var s = "Tyrannosaurus Rex";
我的限制是4.所以我想把这个字符串拆分为4个字母的短字符串到数组中。可以使用以下方法完成:
var arr = s.match(/.{1,4}/g);
但令人不安的是,它应该考虑空间或\ n作为分裂标准。所以最终输出应该是:
["Tyra", "nnos", "auru", "s", "Rex"]
而不是这个:
["Tyra", "nnos", "auru", "s Re", "x"]
任何干净的解决方案都会有所帮助!
答案 0 :(得分:10)
只需将正则表达式修改为与空格或新行不匹配:
var s = "Tyrannosaurus Rex";
console.log(s.match(/[^ \n]{1,4}/g));

答案 1 :(得分:0)
使用此/\S{1,4}/g
。它将考虑除空格,制表符和换行符之外的每个字符。
var s = "Tyrannosaurus Rex";
console.log(s.match(/\S{1,4}/g));

答案 2 :(得分:0)
首先将其拆分为单词,然后应用正则表达式:
var s = "Tyrannosaurus Rex";
var words = s.split(' ');
var arr = [].concat(...words.map(w => w.match(/.{1,4}/g)));
console.log(arr);

编辑:离开这里,但@le_m答案可以证明更好