javascript - 正则表达式替换两个选项之间的字符
问题描述
我正在尝试创建一个优雅的正则表达式来替换以下字符串:
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)/, "");
非常感谢您的帮助:)
解决方案
您可以将此正则表达式与两个捕获组一起使用以在单个中执行此操作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'));
推荐阅读
- javascript - 我们如何对具有双重条件的js对象进行排序
- java - JavaFX 无法连接到 MYSQL
- php - Docker 与 Doctrine 生成代理
- sql - 如何计算自定义时间(如上午 8:30 到下午 18:00)之间的天数是一天 oracle sql 查询
- python - 将嵌套的 json 值列表更改为数组
- mysql - MySql + EF 6 GroupBy 导致 NullReferenceException
- flutter - 我们如何根据颤动的条件更改视图可见性?
- javascript - 将 keyCode 转换为 key
- python - 在python的嵌套字典中应用循环时出错
- javascript - vue.js 动态图片加载