首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于格式化时间的Javascript regex

用于格式化时间的Javascript regex
EN

Stack Overflow用户
提问于 2018-10-24 03:42:49
回答 4查看 56关注 0票数 0

我们组织的样式指南以这样的格式指定了日期-时间:Dec. 31 08:45 a.m.。我们的站点运行Drupal,这是一个基于PHP的CMS。它的字段格式化模板允许在编码中指定日期格式字符串,编码是在HPHP的date()函数中定义的。它只提供了aA,前者提供了pm,后者提供了PM,但我没有看到任何指定句点的东西。

不幸的是,没有一种简单的方法可以连接到平台来定义自定义日期格式,所以我认为最简单的方法是使用javascript进行查找和替换。我想做的是用NN:NN a.m.等替换NN:NN amNN:NN pm格式的实例。

正则表达式从来都不是我的强项。我可以很好地匹配日期时间格式( [0-9][0-9]:[0-9][0-9] pm),但我不知道如何执行适当的替换。

ampm遵循四位数的时间格式时,如何用适当缩写的版本替换它们?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-10-24 03:56:56

代码语言:javascript
复制
str.replace(/(\d{2}:\d{2}\s?a|p)(m)/, '$1.$2');
票数 1
EN

Stack Overflow用户

发布于 2018-10-24 03:50:10

另一种方法是在函数replace中使用可选的处理程序来获取匹配字符串,并将ampm字符串分别替换为a.mp.m

代码语言:javascript
复制
let str = "Dec. 31 08:45 am",
    result = str.replace(/([\d][\d]:[\d][\d] am|pm)/, function(match) {
      return match.replace('am', 'a.m.').replace('pm', 'p.m.');
    });
    
console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2018-10-24 03:58:19

您可以使用以下正则表达式和替换模式来执行您想要的操作:

正则表达式:([0-2][0-9]:[0-5][0-9]\s)(a|p)(m)

替换:‘$1$2.$3’

使用方法:

代码语言:javascript
复制
var text = 'Dec. 31 08:45 am';
text = text.replace(/([0-2][0-9]:[0-5][0-9] )(a|p)(m)/, '$1$2.$3.');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52956717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档