在包含两者的字符串中拆分数字和字母

时间:2012-03-16 17:49:46

标签: javascript regex

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

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

结果是

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

问题在于00AM部分。我希望它也能分开。所以完美的结果将是:

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

4 个答案:

答案 0 :(得分:24)

如果你正在寻找字母或数字的序列,而不是混合的序列,你可以这样做......

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

导致......

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

|的任一侧,我们有一个或多个字母的序列和一个或多个数字的序列。因此,当它出现一封信时,它会收集所有连续的字母,直到它达到非字母,此时它会收集所有连续的数字,依此类推。

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

答案 1 :(得分:1)

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);

答案 2 :(得分:0)

如果日期始终采用该格式,您可以使用:

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)

答案 3 :(得分:0)

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