我正在尝试拆分以下(或类似)字符串“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"]
答案 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有点旧,但它在解析时效果很好。