如何使用正则表达式从 7/16/2016 12:05:00 AM
中提取 12:05 AM
?
我已经做到了这一点
test = "7/16/2016 12:05:00 AM"
test.match(/^(\S+) (.*)/)[2]
> "12:05:00 AM"
但我不知道如何删除秒数。另外,如果有更简单/更有效的方法来完成我想做的事情,请告诉我。
我宁愿不依赖像 moment.js 这样的第三方库
注意:我想要的输出是 12:05 AM
而不仅仅是 12:05
最佳答案
明确查找数字和冒号,在匹配您的上午/下午之前去掉最后两个。我们还将第二个小时数字设为可选,以防我们只是匹配“3:14:16 pm”:
var test = "7/16/16 12:05:00 AM";
var matches = test.match(/(\d\d?:\d\d):\d\d(\s[ap]m)/i);
var time = matches && (matches[1] + matches[2]);
// time === "12:05 AM"
只是为了注意正则表达式的完整性,您还可以使用大括号来确定要计算的位数(我没有在上面,因为它只有 1-2 时最后有更多字符)。以下和以上都将匹配相同的字符串:
var matches = test.match(/(\d{1,2}:\d{2}):\d{2}(\s[ap]m)/i;
关于javascript - 使用正则表达式从日期和时间获取时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38403413/