javascript - 使用正则表达式从日期和时间获取时间

标签 javascript regex

如何使用正则表达式从 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/

相关文章:

javascript - React 组件的自定义类型 - Prop 不匹配

javascript - 查找并选择文本中的非英文字符

javascript - 将事件分派(dispatch)到 .subscribe JavaScript 方法

php - 带有转义圆括号的正则表达式

javascript - Bootstrap 之旅不工作

javascript - Jquery Mobile,不工作对话框

javascript - 在服务器端处理时在搜索字符串中输入特殊字符

regex - 如何增加也包含字母的字符串中的数字?

正则表达式从 bash 脚本中的字符串中提取第一个 float

regex - 查找距离方差为零且记录瓦数的条目