正则表达式测试 在线工具核心JS实现

简介: 本文介绍在线正则表达式测试工具的核心JS实现,基于Vue前端与独立`RegexHelper`类设计,支持匹配测试、高亮渲染、详情展示、文本替换及sed命令生成,并内置常用模板,兼顾安全(XSS防护)与性能(动态加载)。

正则表达式测试 在线工具核心JS实现

正则表达式是开发者日常工作中不可或缺的工具,但编写和调试正则往往比较繁琐。本文介绍正则表达式测试工具的核心JavaScript实现。

在线工具网址:https://see-tool.com/regex-tester
工具截图:
工具截图.png

整体架构

工具采用前后端分离架构,前端页面使用Vue开发,核心正则处理逻辑封装在独立的JavaScript类中。这种设计将业务逻辑与UI解耦,便于维护和复用。

核心类设计

整个工具的核心是 RegexHelper 类,所有功能都通过这个类暴露。主要包含以下几个核心方法:

1. 正则表达式测试

testRegex 方法负责执行正则匹配:

testRegex(pattern, testText, flags = {
   }) {
   
  const regex = new RegExp(pattern, flagsStr)

  if (flags.global) {
   
    matches = Array.from(testText.matchAll(regex))
  } else {
   
    const match = testText.match(regex)
    if (match) matches = [match]
  }

  return {
    regex, matches, isValid: true, error: null }
}

这里使用 JavaScript 内置的 RegExp 对象执行匹配。当启用全局标志 g 时,使用 matchAll 获取所有匹配;否则使用 match 获取第一个匹配。

2. 匹配结果高亮

highlightMatches 方法将匹配文本用HTML标签包裹,实现高亮效果:

highlightMatches(text, matches) {
   
  let result = ''
  let lastIndex = 0

  matches.forEach((match) => {
   
    result += this.escapeHtml(text.slice(lastIndex, match.index))
    result += `<span class="match-highlight">${
     this.escapeHtml(match[0])}</span>`
    lastIndex = match.index + match[0].length
  })

  result += this.escapeHtml(text.slice(lastIndex))
  return result
}

通过记录每次匹配的位置和长度,依次拼接非匹配文本和高亮后的匹配文本。escapeHtml 方法防止XSS攻击。

3. 匹配详情生成

generateMatchDetails 方法展示每个匹配的详细信息:

generateMatchDetails(matches) {
   
  matches.forEach((match, index) => {
   
    html += `<div>Match ${
     index + 1}:</div>`
    html += `<div>Full Match: ${
     match[0]}</div>`
    html += `<div>Position: ${
     match.index} - ${
     match.index + match[0].length - 1}</div>`

    if (match.length > 1) {
   
      for (let i = 1; i < match.length; i++) {
   
        html += `<div>Group $${
     i}: ${
     match[i]}</div>`
      }
    }
  })
}

包括完整匹配内容、位置索引、捕获组等信息。

4. 替换功能

performReplace 方法使用JavaScript原生的 String.replace 实现替换:

performReplace(regex, testText, replaceText) {
   
  return testText.replace(regex, replaceText)
}

支持 $1$2 等反向引用语法。

5. sed命令生成

工具还提供转换为Linux sed命令的功能,generateSedCommand 方法:

generateSedCommand(pattern, replacement, flags) {
   
  const escapedPattern = this.escapeSedString(pattern)
  const escapedReplacement = this.escapeSedString(replacement)
  return `sed 's/${
     escapedPattern}/${
     escapedReplacement}/g' input.txt`
}

需要对特殊字符进行转义,包括 /&$ 等。

模板系统

工具内置常用正则模板,包括邮箱、手机号、URL、IP地址等。模板数据结构如下:

{
   
  name: 'email',
  pattern: '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}',
  icon: 'fas fa-envelope',
  flags: ''
}

用户点击模板按钮即可快速填入对应正则。

动态加载

页面采用动态加载方式引入核心脚本:

const script = document.createElement('script')
script.src = '/js/regex-helper.js'
script.onload = initHelper
document.head.appendChild(script)

这种按需加载策略可以减少首屏加载时间。

总结

RegexHelper 类封装了正则表达式的核心功能,包括匹配测试、高亮显示、详情展示、替换操作和命令生成。通过清晰的方法划分和独立的类设计,实现了功能完整、易于维护的正则测试工具。

目录
相关文章
|
2月前
|
JavaScript 测试技术 索引
正则表达式测试 在线工具分享
分享一款实用的在线正则表达式测试工具,支持实时匹配高亮、分组详情查看、g/i/m标志切换、常用模板一键插入及正则替换功能,助你高效验证、提取与处理文本,是开发与学习正则的得力助手!
541 10
|
2月前
|
自然语言处理 JavaScript API
OpenClaw(Clawdbot)阿里云及本地部署喂饭级流程 + 百炼 Coding Plan 配置实操手册
OpenClaw的核心优势之一在于灵活的模型扩展性,而阿里云百炼Coding Plan为其提供了丰富的模型选择——涵盖千问系列、GLM、Kimi等主流模型,满足文本生成、代码开发、多模态交互等全场景需求。2026年,该套餐推出Lite与Pro两个版本,适配不同用户的使用量级,通过专属API Key与Base URL即可快速接入OpenClaw。
3228 9
|
算法 前端开发 JavaScript
JS - 前端生成 UUID 四种方法
JS - 前端生成 UUID 四种方法
7071 0
|
2月前
|
存储 Java
java synchronized 锁升级:从偏向锁到重量级锁的底层自适应优化
`synchronized` 是Java核心同步机制,JDK 1.6起引入锁升级(无锁→偏向锁→轻量级锁→重量级锁),依托对象头Mark Word动态适配竞争强度,兼顾性能与稳定性,是并发编程必懂的底层逻辑。(239字)
298 8
|
2月前
|
存储 调度 异构计算
推理平台全景
本次分享介绍了常见的开源推理平台项目: NVIDIA Dynamo, llm-d, Kthena, RoleBasedGroup, OME, AiBrix, KServe
532 8
推理平台全景
|
2月前
|
传感器 数据采集 运维
VAE 原理拆解:从概率编码到潜在空间正则化
本文深入浅出拆解VAE构建全流程,聚焦实现、训练、调试与部署,而非纯数学推导。逐行解读PyTorch最小实现,详解编码器、重参数化、解码器三大组件及损失设计,并系统介绍训练后五大推理模式:异常检测、生成合成数据、条件生成、潜在空间分析与数据填补。
306 7
VAE 原理拆解:从概率编码到潜在空间正则化
|
2月前
|
存储 安全 API
OpenClaw(Clawdbot)阿里云及本地搭建保姆级流程:接入安全防护Skill Semgrep实战指南
随着OpenClaw(Clawdbot)功能的不断强大,其安全风险也日益凸显。2026年,ClawHavoc事件中暴露1184个恶意Skill,这些插件伪装成正常工具,实则窃取API密钥、注入恶意指令;Moltbook平台更是泄露35000个邮箱与150万个API Token,而MCP架构设计的权限漏洞,让扩展直接拥有系统级权限,进一步放大了攻击面。
663 7
|
2月前
|
人工智能 Shell API
OpenClaw(Clawdbot)阿里云及本地部署保姆级指南:附GitHub Codespaces 700+Skills赋能实操
OpenClaw(原Clawdbot、Moltbot)作为2026年热门的开源AI智能体框架,GitHub星标已破13万,其核心价值在于“可执行的自动化能力”——不仅能聊天推理,还能连接各类工具完成实际任务。但单独的OpenClaw如同“瘫痪的天才”,模型是大脑,而Skills(技能插件)才是执行力的核心。GitHub上的`awesome-openclaw-skills`仓库收录了700+技能,覆盖开发、办公、生活等30多个领域,让AI真正拥有“手脚”。
809 5
|
3月前
|
数据采集 数据挖掘 Python
Python3安装步骤详解(附环境变量配置与验证方法)
Python3是专为Windows设计的Python 3官方安装包,支持数据分析、爬虫、自动化等开发。安装时务必勾选“Add Python to PATH”,推荐以管理员身份运行。安装后通过cmd输入`python --version`验证,并可用IDLE或`.py`文件快速上手编程。(239字)
|
缓存 自然语言处理 算法
大模型意图识别工程化实践
本文重点介绍大模型意图识别能力在智能电视核心链路中的落地过程和思考,对比了基础模型、RAG 、以及7b模型微调三种方案的优缺点。
5581 122