我们组织的样式指南以以下格式指定日期时间:Dec. 31 08:45 a.m.
。我们的网站运行Drupal,这是一个基于PHP的CMS。它的字段格式模板允许使用HPHP的date()
函数中定义的编码中指定的日期格式字符串。它仅提供a
和{{1},其中pm
给出A
,而PM
给出我NN:NN am
,但是看不到任何带有句点的内容。
不幸的是,没有一种简单的方法可以挂接到平台上以定义自定义日期格式,因此我认为最简单的方法是使用javascript进行查找和替换。我想做的是将NN:NN pm
和NN:NN a.m.
格式的实例替换为[0-9][0-9]:[0-9][0-9] pm
等。
正则表达式从来不是我的强项。我可以很好地匹配日期时间格式(am
),但是我不知道如何执行正确的替换。
当pm
和item.php
遵循四位数的时间格式时,如何用正确缩写的版本替换?
答案 0 :(得分:1)
一种替代方法是使用函数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);
答案 1 :(得分:1)
str.replace(/(\d{2}:\d{2}\s?a|p)(m)/, '$1.$2');
答案 2 :(得分:1)
您可以使用以下正则表达式和替换模式来完成所需的操作:
正则表达式:([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.');
答案 3 :(得分:1)
'Dec. 31 08:45 AM, Jan. 1 10:15 pm'.replace(/(\d{2}:\d{2}) (a|p)(m)/ig, (match, p1, p2, p3) => {
return `${p1} ${p2}.${p3}.`.toLowerCase();
});
产生结果
Dec. 31 08:45 a.m., Jan. 1 10:15 p.m.