Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Splitting numbers and letters in string which contains both

I am trying to split following (or similar) string "08-27-2015 07:25:00AM". Currently I use

var parts = date.split(/[^0-9a-zA-Z]+/g);

Which results in

["02", "27", "2012", "03", "25", "00AM"]

The problem is with the 00AM part. I want it to be separated too. So the perfect result would be:

["02", "27", "2012", "03", "25", "00", "AM"]
like image 549
Ilya Tsuryev Avatar asked Mar 16 '12 17:03

Ilya Tsuryev


1 Answers

If you're looking for sequences of letters or numbers, but not a sequence both mixed, you can do this...

"08-27-2015 07:25:00AM".match(/[a-zA-Z]+|[0-9]+/g)

resulting in...

["08", "27", "2015", "07", "25", "00", "AM"]

On either side of the |, we have a sequence of one or more letters and a sequence of one or more numbers. So when it comes across a letter, it will gather all contiguous letters until it reaches a non-letter, at which point it gathers all contiguous numbers, and so on.

Any other character simply doesn't match so it doesn't become part of the result.

like image 53
2 revsuser1106925 Avatar answered Oct 18 '22 04:10

2 revsuser1106925