首页 > 解决方案 > 正则表达式替换两个选项之间的字符

问题描述

我正在尝试创建一个优雅的正则表达式来替换以下字符串:

12:00:00 a. m. 对此: 12:00 AM

或者也替换: 12:00:23 a.m.to12:00 am

我的意思是,我想删除最后一个::00并替换a. m.AM

这就是我的想法(但缺失):

"12:00:00 a. m.".replace(/(:*)?(.*\s)/, "");

非常感谢您的帮助:)

标签: javascriptregex

解决方案


您可以将此正则表达式与两个捕获组一起使用以在单个中执行此操作replace

/:\d\d\s*(\w)\.?\s*(\w)\.?/

const func = str => str.replace(/:\d\d\s*(\w)\.?\s*(\w)\.?/, (a, b, c) => {
  return ` ${b}${c}`.toUpperCase();
});

console.log(func('12:12:34 a. m.'));
console.log(func('12:34:56 a.m.'));
console.log(func('12:12:34 pm'));
console.log(func('12:34:56pm'));
console.log(func('12:34:56p.   m'));


推荐阅读