fork download
  1. function split(s) {
  2. var match;
  3. var result = [];
  4. while (Boolean(match = s.match(/([A-Z]+|[A-Z]?[a-z]+|[0-9]+|([^a-zA-Z0-9])+)$/))) {
  5. if (!match[2]) {
  6. //don't return non alphanumeric tokens
  7. result.unshift(match[1]);
  8. }
  9. s = s.substring(0, s.length - match[1].length);
  10. }
  11. return result;
  12. }
  13.  
  14. console.log('P90X', split('P90X'));
  15. console.log('TotallyCromulentWord', split('TotallyCromulentWord'));
  16. console.log('TransAM', split('TransAM'));
  17. console.log('URLConverter', split('URLConverter'));
  18. console.log('Abc.DEF$012', split('Abc.DEF$012'));
  19.  
Success #stdin #stdout 0.06s 10728KB
stdin
Standard input is empty
stdout
P90X [ 'P', '90', 'X' ]
TotallyCromulentWord [ 'Totally', 'Cromulent', 'Word' ]
TransAM [ 'Trans', 'AM' ]
URLConverter [ 'URL', 'Converter' ]
Abc.DEF$012 [ 'Abc', 'DEF', '012' ]