2011-12-02 86 views
28

我有一个字符串,我需要分割成较小的字符串与6的长度相等我尝试使用的数组:字符串分割到相等长度的字符串

'abcdefghijklmnopqrstuvwxyz'.split(/(.{6})/) 

但它返回与像这样空字符串的数组:

["", "abcdef", "", "ghijkl", "", "mnopqr", "", "stuvwx", ""] 

回答

53

match与全局标志结合使用,而不是拆分。 {1,6}是必要的,也包括匹配字符串的最后部分。模式默认为贪婪,这意味着尽可能多的匹配。因此,.{1,6}只能在字符串末尾匹配少于6个字符。

'abcdefghijklmnopqrstuvwxyz'.match(/.{1,6}/g); 

结果:

["abcdef", "ghijkl", "mnopqr", "stuvwx", "yz"]; 

注意,返回的对象是一个真正的数组。为了验证:

console.log('.'.match(/./g) instanceof Array); //true 

+0

就像一个魅力!谢谢! – trumank

+1

请注意'.'确实不*匹配任何字符。它[忽略'Lineterminator's](http://es5.github.io/#x15.10.2.8)。使用'[\ s \ S]'来确保它适用于多行字符串。 – user123444555621