You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何转换字符串中的日期格式?将DD.MM.YYYY转为YYYY-MM-DD

解决字符串中DD.MM.YYYY到YYYY-MM-DD的格式转换问题

你原来的正则之所以在包含其他内容的字符串里失效,是因为用了^(字符串开头)和$(字符串结尾)锚点,它只会匹配整个字符串就是日期的情况,一旦字符串里有其他内容,就匹配不到目标日期了。另外还有个小问题:正则里的.是匹配任意字符的,不是特指小数点,得转成\.才能精确匹配日期里的点。

直接用下面的代码就能解决问题:

const input = "something here 19.09.2022 another string here";
const converted = input.replace(/(\d{1,2})\.(\d{1,2})\.(\d{4})/g, "$3-$2-$1");
console.log(converted); // 输出:"something here 2022-09-19 another string here"

关键修改点:

  • 去掉^和$锚点:让正则能匹配字符串中任意位置的日期,不用局限于整个字符串
  • 把.转义成\.:确保只匹配日期里的小数点,不会误匹配其他字符
  • 添加g全局标志:一次性替换字符串里所有符合格式的日期,不是只替换第一个

如果想要更严谨,只替换有效的日期(比如日不超过31,月不超过12),可以用更严格的正则:

const input = "something here 32.09.2022 another string here 25.12.2023";
const converted = input.replace(/(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(\d{4})/g, "$3-$2-$1");
console.log(converted); // 输出:"something here 32.09.2022 another string here 2023-12-25"

这个正则会过滤掉像32.09.2022这种无效日期,只转换合法的格式。

内容的提问来源于stack exchange,提问作者smolo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:05:25