跳到主要内容

开发者工具 — JSON 格式化与校验、正则表达式测试、Cron 表达式解析

粘贴 JSON 即可实时校验,并用行号和列号标出错误;支持缩进格式化、单行压缩、按键名排序、转换为 YAML 以及树形查看。大整数与键的顺序都按原文保留。同一页面的其他标签里还有测试 JavaScript 正则表达式的正则测试工具,以及把 cron 表达式翻译成白话并计算下次执行时间的 cron 解析器。输入的内容不会发送到服务器。

JSON 格式化与校验

粘贴 JSON 即可立即校验,出错时会标出所在的行和列。支持缩进格式化、压缩成一行、转换为 YAML 与树形查看,大数字和键的顺序都原样保留。

结果
在左侧粘贴 JSON,结果会显示在这里。第一次使用可以先点上方的“示例”按钮。
等待输入。

正则测试

输入模式与标志后,会为测试字符串中的每个匹配着色,并显示捕获组与替换结果。直接使用浏览器的 JavaScript 正则引擎运行。

请输入模式。
匹配列表

没有匹配。

$1、$2 表示编号分组,$<名称> 表示命名分组,$& 表示整个匹配。留空则不替换。

Cron 表达式解析

把 cron 表达式翻译成易读的句子,并按所选时区计算接下来 5 次执行时间。采用分、时、日、月、周五个字段的标准 crontab 格式。

逐字段解析
下次执行时间

    服务器上的 cron 通常按服务器所在时区运行。GitHub Actions 的 schedule 和许多云端调度器使用 UTC,若要对应北京时间(UTC+8)需要减去 8 小时再写。

    常见问题

    粘贴的 JSON 或测试字符串会发送到服务器吗?
    不会。校验、转换、匹配与计算全部在本浏览器内完成,输入的内容不会发送到任何地方,也不会保存。可以放心粘贴 API 响应或配置文件等敏感内容。本浏览器只会记住最后打开的标签与缩进等显示设置。
    格式化后数字或键的顺序会变吗?
    不会。本工具不经过 JavaScript 的 JSON.parse,而是自行解析,因此超过 2 的 53 次方的大整数(如推特、Discord 的 ID)以及 1.0 这样的数字写法都会按原文保留。像 "10"、"2" 这样的数字键也不会被提到前面。同一个键出现两次时会同时保留并给出警告。
    带注释或末尾逗号的 JSON 可以吗?
    JSON 标准不允许注释、最后一项后的逗号以及单引号字符串,因此会显示为错误。不过这些都是常见失误,提示会指出具体问题,例如“末尾多了一个逗号”“不能使用单引号”,并标出位置,只需修改那一处即可。
    正则表达式遵循哪种语言的语法?
    直接使用浏览器的 JavaScript(ECMAScript)正则引擎运行。可以使用命名分组、后行断言(lookbehind)以及 Unicode 属性(在 u 标志下使用 \p{L} 等)。PCRE、Python 独有的占有量词、原子分组、\A·\Z 等语法不受支持,若模式要用于其他语言,请先确认语法差异。
    “1.5 秒内未完成”是什么意思?
    像 (a+)+$ 这样量词嵌套的模式,在不匹配的输入上会因回溯的组合数爆炸而卡住好几分钟(灾难性回溯)。本页面在独立的工作线程中运行正则,超过 1.5 秒就会中止,因此页面不会卡死。出现这条提示意味着实际服务中同样的输入也可能让服务器卡住,请拆开嵌套的量词。
    在 cron 中同时指定日期和星期会怎样?
    标准 crontab 中,如果两个字段都不是星号,只要其中之一符合就会执行。例如 0 9 1 * 1 会在每月 1 日以及每周一的上午 9 点运行。星期字段中 0 和 7 都表示星期日,也可以使用 MON、JAN 等英文缩写。不支持带秒字段的 6 字段格式(Quartz、Spring)以及 L、W、# 等扩展语法。

    相关工具