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

如何在正则表达式中按条件为数字添加前置0?

正则实现数字补0的解决方案

你的需求是将JSON中createdAt的时间数组转换为带前置0的标准时间字符串,核心是对每个捕获到的数字(年、月、日、时、分、秒)补0到两位。以下分不同场景给出具体实现:

一、编程语言环境(支持正则回调函数)

如果是在JavaScript、Python这类支持正则替换回调的语言中,直接通过函数处理每个捕获组的补0逻辑最灵活。

JavaScript示例

// 原始输入文本
const input = '"createdAt": [ 2024, 5, 3, 9, 4, 2 ]';
// 搜索正则
const regex = /"createdAt":\s+\[\s+([0-9]+),\s+([0-9]+),\s+([0-9]+),\s+([0-9]+),\s+([0-9]+),\s+([0-9]+)\s+]/;
// 替换逻辑:对每个数字补0到两位
const output = input.replace(regex, (_, year, month, day, hour, minute, second) => {
  const padZero = num => num.toString().padStart(2, '0');
  return `"createdAt": "${padZero(year)}-${padZero(month)}-${padZero(day)}T${padZero(hour)}:${padZero(minute)}:${padZero(second)}"`;
});

console.log(output);
// 输出:"createdAt": "2024-05-03T09:04:02"

Python示例

import re

# 原始输入文本
input_text = '"createdAt": [ 2024, 5, 3, 9, 4, 2 ]'
# 搜索正则
pattern = r'"createdAt":\s+\[\s+([0-9]+),\s+([0-9]+),\s+([0-9]+),\s+([0-9]+),\s+([0-9]+),\s+([0-9]+)\s+]'

# 补0函数
def pad_zero(num_str):
    return num_str.zfill(2)

# 替换回调
def format_time(match):
    year, month, day, hour, minute, second = match.groups()
    return f'"createdAt": "{pad_zero(year)}-{pad_zero(month)}-{pad_zero(day)}T{pad_zero(hour)}:{pad_zero(minute)}:{pad_zero(second)}"'

output_text = re.sub(pattern, format_time, input_text)
print(output_text)
# 输出:"createdAt": "2024-05-03T09:04:02"

二、文本编辑器环境(支持正则条件替换)

如果是在Notepad++、VS Code这类编辑器中替换文本,可利用编辑器自带的正则替换特性:

VS Code实现

  1. 打开查找替换面板(Ctrl+F),勾选「正则表达式」选项
  2. 搜索框输入原正则:
    "createdAt":\s+\[\s+([0-9]+),\s+([0-9]+),\s+([0-9]+),\s+([0-9]+),\s+([0-9]+),\s+([0-9]+)\s+]
    
  3. 替换框输入(VS Code支持在替换中使用JS表达式):
    "createdAt": "${1.padStart(2, '0')}-${2.padStart(2, '0')}-${3.padStart(2, '0')}T${4.padStart(2, '0')}:${5.padStart(2, '0')}:${6.padStart(2, '0')}"
    
  4. 点击「替换全部」即可得到补0后的标准时间字符串。

Notepad++实现

Notepad++支持条件判断语法,替换正则可写为:

"createdAt": "(?{1:len($1)==1?0$1:$1})-(?{2:len($2)==1?0$2:$2})-(?{3:len($3)==1?0$3:$3})T(?{4:len($4)==1?0$4:$4}):(?{5:len($5)==1?0$5:$5}):(?{6:len($6)==1?0$6:$6})"

搜索正则保持不变,直接替换即可完成补0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:25:19