function split(s) {
var match;
var result = [];
while (Boolean(match = s.match(/([A-Z]+|[A-Z]?[a-z]+|[0-9]+|([^a-zA-Z0-9])+)$/))) {
if (!match[2]) {
//don't return non alphanumeric tokens
result.unshift(match[1]);
}
s = s.substring(0, s.length - match[1].length);
}
return result;
}
console.log('P90X', split('P90X'));
console.log('TotallyCromulentWord', split('TotallyCromulentWord'));
console.log('TransAM', split('TransAM'));
console.log('URLConverter', split('URLConverter'));
console.log('Abc.DEF$012', split('Abc.DEF$012'));
ZnVuY3Rpb24gc3BsaXQocykgewogICAgdmFyIG1hdGNoOwogICAgdmFyIHJlc3VsdCA9IFtdOwogICAgd2hpbGUgKEJvb2xlYW4obWF0Y2ggPSBzLm1hdGNoKC8oW0EtWl0rfFtBLVpdP1thLXpdK3xbMC05XSt8KFteYS16QS1aMC05XSkrKSQvKSkpIHsKICAgICAgICBpZiAoIW1hdGNoWzJdKSB7CiAgICAgICAgICAgIC8vZG9uJ3QgcmV0dXJuIG5vbiBhbHBoYW51bWVyaWMgdG9rZW5zCiAgICAgICAgICAgIHJlc3VsdC51bnNoaWZ0KG1hdGNoWzFdKTsKICAgICAgICB9CiAgICAgICAgcyA9IHMuc3Vic3RyaW5nKDAsIHMubGVuZ3RoIC0gbWF0Y2hbMV0ubGVuZ3RoKTsKICAgIH0KICAgIHJldHVybiByZXN1bHQ7Cn0KCmNvbnNvbGUubG9nKCdQOTBYJywgc3BsaXQoJ1A5MFgnKSk7CmNvbnNvbGUubG9nKCdUb3RhbGx5Q3JvbXVsZW50V29yZCcsIHNwbGl0KCdUb3RhbGx5Q3JvbXVsZW50V29yZCcpKTsKY29uc29sZS5sb2coJ1RyYW5zQU0nLCBzcGxpdCgnVHJhbnNBTScpKTsKY29uc29sZS5sb2coJ1VSTENvbnZlcnRlcicsIHNwbGl0KCdVUkxDb252ZXJ0ZXInKSk7CmNvbnNvbGUubG9nKCdBYmMuREVGJDAxMicsIHNwbGl0KCdBYmMuREVGJDAxMicpKTsK
P90X [ 'P', '90', 'X' ]
TotallyCromulentWord [ 'Totally', 'Cromulent', 'Word' ]
TransAM [ 'Trans', 'AM' ]
URLConverter [ 'URL', 'Converter' ]
Abc.DEF$012 [ 'Abc', 'DEF', '012' ]