正则表达式测试 API

测试 JavaScript 正则:匹配详情、替换、分割;在隔离线程中带 100 毫秒超时执行,防止 ReDoS

数据来源:本地计算

返回统一的 JSON 格式 { code, message, cached, stale, updatedAt, data },支持跨域,免注册每天可免费调用 100 次,注册后每天 10000 次。

正则测试(JavaScript / V8 语法):返回匹配位置与分组,或执行替换、分割;单次执行超过 100 毫秒会被中断

GET /api/tools/regex

请求参数

  • pattern(必填):正则表达式,不写两边的斜杠,最多 1000 个字符,示例 (?<year>\d{4})-(?<month>\d{2})
  • text(必填):要匹配的文本,最多 20000 个字符,示例 开始于 2026-09,结束于 2027-01。
  • flags:修饰符(传空字符串表示不加修饰符):g 全局、i 忽略大小写、m 多行、s 点号匹配换行、u Unicode、v Unicode 集合、y 粘性、d 生成索引,示例 gi
  • action:match 匹配详情 / replace 替换 / split 分割,示例 match
  • replacement:替换内容(action=replace 时使用),支持 $1、
    lt;name>、
    amp;,最多 1000 个字符,示例
    lt;month>/
    lt;year>

返回字段

  • pattern(string):正则表达式,与请求参数相同
  • flags(string):修饰符,与请求参数相同
  • action(string):执行的操作:match / replace / split
  • matched(boolean):仅 match:是否至少匹配到一处
  • total(number):仅 match:匹配总数(没有 g 修饰符时最多为 1)
  • matches(array):仅 match:匹配详情,最多 200 条
  • matches[].match(string):匹配到的文本
  • matches[].index(number):起始位置(UTF-16 下标,从 0 开始)
  • matches[].end(number):结束位置(不含),等于 index + 匹配文本的 UTF-16 长度
  • matches[].groups(array):捕获分组,按左括号顺序;没有分组时为空数组
  • matches[].groups[](string|null):一个分组捕获的文本;该分组没参与匹配时为 null
  • matches[].named(object|null):命名分组(?<name>...),键为分组名;没有命名分组时为 null
  • matches[].named.*(string|null):命名分组捕获的文本;没参与匹配时为 null
  • result(string):仅 replace:替换后的文本(没有 g 修饰符时只替换第一处),超过 100000 个字符时截断
  • parts(array):仅 split:分割结果,最多 200 段;正则里的捕获分组也会出现在结果中
  • parts[](string|null):一段文本;未参与匹配的捕获分组为 null
  • truncated(boolean):结果是否因超过上限被截断(match 超过条数上限、replace 超过长度上限、split 超过段数上限)
  • tookMs(number):正则执行耗时(毫秒,保留 2 位小数,不含排队和线程通信时间)

正则测试(JavaScript / V8 语法):返回匹配位置与分组,或执行替换、分割;单次执行超过 100 毫秒会被中断(POST JSON 请求体,参数不进网址)

POST /api/tools/regex

请求参数

  • pattern(必填):正则表达式,不写两边的斜杠,最多 1000 个字符,示例 (?<year>\d{4})-(?<month>\d{2})
  • text(必填):要匹配的文本,最多 20000 个字符,示例 开始于 2026-09,结束于 2027-01。
  • flags:修饰符(传空字符串表示不加修饰符):g 全局、i 忽略大小写、m 多行、s 点号匹配换行、u Unicode、v Unicode 集合、y 粘性、d 生成索引,示例 gi
  • action:match 匹配详情 / replace 替换 / split 分割,示例 match
  • replacement:替换内容(action=replace 时使用),支持 $1、
    lt;name>、
    amp;,最多 1000 个字符,示例
    lt;month>/
    lt;year>

返回字段

  • pattern(string):正则表达式,与请求参数相同
  • flags(string):修饰符,与请求参数相同
  • action(string):执行的操作:match / replace / split
  • matched(boolean):仅 match:是否至少匹配到一处
  • total(number):仅 match:匹配总数(没有 g 修饰符时最多为 1)
  • matches(array):仅 match:匹配详情,最多 200 条
  • matches[].match(string):匹配到的文本
  • matches[].index(number):起始位置(UTF-16 下标,从 0 开始)
  • matches[].end(number):结束位置(不含),等于 index + 匹配文本的 UTF-16 长度
  • matches[].groups(array):捕获分组,按左括号顺序;没有分组时为空数组
  • matches[].groups[](string|null):一个分组捕获的文本;该分组没参与匹配时为 null
  • matches[].named(object|null):命名分组(?<name>...),键为分组名;没有命名分组时为 null
  • matches[].named.*(string|null):命名分组捕获的文本;没参与匹配时为 null
  • result(string):仅 replace:替换后的文本(没有 g 修饰符时只替换第一处),超过 100000 个字符时截断
  • parts(array):仅 split:分割结果,最多 200 段;正则里的捕获分组也会出现在结果中
  • parts[](string|null):一段文本;未参与匹配的捕获分组为 null
  • truncated(boolean):结果是否因超过上限被截断(match 超过条数上限、replace 超过长度上限、split 超过段数上限)
  • tookMs(number):正则执行耗时(毫秒,保留 2 位小数,不含排队和线程通信时间)