我们组织的样式指南以这样的格式指定了日期-时间:Dec. 31 08:45 a.m.。我们的站点运行Drupal,这是一个基于PHP的CMS。它的字段格式化模板允许在编码中指定日期格式字符串,编码是在HPHP的date()函数中定义的。它只提供了a和A,前者提供了pm,后者提供了PM,但我没有看到任何指定句点的东西。
不幸的是,没有一种简单的方法可以连接到平台来定义自定义日期格式,所以我认为最简单的方法是使用javascript进行查找和替换。我想做的是用NN:NN a.m.等替换NN:NN am和NN:NN pm格式的实例。
正则表达式从来都不是我的强项。我可以很好地匹配日期时间格式( [0-9][0-9]:[0-9][0-9] pm),但我不知道如何执行适当的替换。
当am和pm遵循四位数的时间格式时,如何用适当缩写的版本替换它们?
发布于 2018-10-24 03:56:56
str.replace(/(\d{2}:\d{2}\s?a|p)(m)/, '$1.$2');发布于 2018-10-24 03:50:10
另一种方法是在函数replace中使用可选的处理程序来获取匹配字符串,并将am或pm字符串分别替换为a.m或p.m。
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);
发布于 2018-10-24 03:58:19
您可以使用以下正则表达式和替换模式来执行您想要的操作:
正则表达式:([0-2][0-9]:[0-5][0-9]\s)(a|p)(m)
替换:‘$1$2.$3’
使用方法:
var text = 'Dec. 31 08:45 am';
text = text.replace(/([0-2][0-9]:[0-5][0-9] )(a|p)(m)/, '$1$2.$3.');https://stackoverflow.com/questions/52956717
复制相似问题