【发布时间】:2022-01-18 23:08:12
【问题描述】:
我正在尝试用时间格式替换 4 个数字。例如,如果用户输入 1234 以替换为 12:34
我发现这个正则表达式可以完成这项工作
let myString = "1234";
myString.replace(/\b(\d{2})(\d{2})/g, '$1:$2')
但现在我正在尝试弄清楚如何将其用于以下情况
94 - 这应该用 23 替换,然后在冒号之后的时间也一样
01:74 - 这应该替换为 01:59
我找到了一个可以做到这一点的正则表达式 ^([0-1]?[0-9]|2[0-3]):[0-5][0-9],但我无法弄清楚如何将它与 .replace 结合起来
【问题讨论】:
-
为什么是
24:12?也许00:12? -
那么您将不得不在替换中使用一个函数并添加逻辑来更改输出。对于可以做到这一点的字符串输出,您无能为力。
-
仅插入一个冒号(不是您的整个问题),您可以用冒号替换零宽度匹配(将其视为两个连续字符之间):
myString.replace(/(?<=\b\d{2})(?=\d{2}\b)/g, ':')。 Demo。将光标悬停在链接上正则表达式的每个元素上,以获得对其功能的解释。 -
@WiktorStribiżew 你是对的,忽略了这一点
标签: javascript string time