在同时包含数字和字母的字符串中拆分数字和字母

Splitting numbers and letters in string which contains both

本文关键字:数字 字符串 拆分 包含      更新时间:2023-09-26

我正在尝试拆分以下(或类似)字符串"08-27-2015 07:25:00AM"。目前我使用

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

导致

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

问题出在00AM部分。我也想把它分开。因此,完美的结果是:

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

如果您正在寻找字母或数字序列,但不是两者混合的序列,您可以这样做。。。

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

导致…

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

|的两侧,我们有一个由一个或多个字母组成的序列和一个或更多个数字组成的序列。因此,当它遇到一个字母时,它会收集所有连续的字母,直到它到达一个非字母,在这一点上,它会聚集所有连续的数字,依此类推

任何其他字符都不匹配,所以它不会成为结果的一部分。

var date = "08-27-2015 07:25:00AM";
var parts = date.replace(/([AP]M)$/i, " $1").split(/[^0-9a-z]+/ig);
var date = "05June2012";
var parts = date.replace(/([a-z]+)/i, " $1 ").split(/[^0-9a-z]+/ig);

如果日期始终是这种格式,则可以使用:

var parts = date.match(/([0-9]{2})-([0-9]{2})-([0-9]{4})'s([0-9]{2}):([0-9]{2}):([0-9]{2})(AM|PM)/).splice(1)

我会使用日期库来解析您想要的字段。这样就可以处理多种格式,而不用担心使用正则表达式进行解析。虽然DateJS有点老,但它在解析方面表现良好。