рони,
Да с помощью .match заработало но он изменяет получившийся объект от того каким он был при .split
Пример:
// было
var array = [{name: 'Петров В. Б.'}, {name: 'Не человек'}];
for (var i = 0; i < array.length; i++) {
var split = array[i].name.split(/^\s*([А-ЯЁ]\S+)\s+([А-ЯЁ])\s*\.\s*([А-ЯЁ])\s*\.\s*([\s\S]*?)\s*$/);
alert(split);
};
Тоесть в данном примере если фамилия, то split[0] = '', split[1] = Петров и тп. А если не фамилия split[0] = 'Не человек'. в этом и был смысл.
Если использовать .math split[0] всегда занят и не работает если не "человек":
var array = [{name: 'Петров В. Б.'}, {name: 'Не человек'}];
for (var i = 0; i < array.length; i++) {
var split = array[i].name.match(/^\s*([А-ЯЁ]\S+)\s+([А-ЯЁ])\s*\.\s*([А-ЯЁ])\s*\.\s*([\s\S]*?)\s*$/);
alert(split);
};