我的代码中包含此正则表达式:

const date = new Date();const result = date.toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, '$1$3');console.log(result);//"8:58 AM"

在某些情况下(Android模拟器),它显示为“ 08:58”。我对正则表达式不好:

replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, '$1$3')

替换是什么意思?

此正则表达式删除第二组,也(:[\d]{2})就是在您的新日期new Date().toLocaleTimeString()示例中,这是输出时间 15:09:22的秒数(在撰写本文时)

注意

new Date().toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, '$1')

足以写hh:mm,

编辑:$3对于基于12小时的系统(AP / PM),它特别有用,因为它会打印其余字符串(又名PM或AM),您在toLocaleTimeString()说这是为什么它是本地的并且依赖于系统

还有其他解决方案来写hh:mm例如

const date = new Date();console.log(`${(''+date.getHours()).padStart(2, '0')}:${(''+date.getMinutes()).padStart(2, '

此正则表达式删除给定字符串中的两个特定数字。

范例:


const test = '11111:22:33 whatever';const rep = test.replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, '$1$3');  console.log(rep);