尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

JS使用Regex校验出现卡顿

JS使用Regex校验出现卡顿
📅 发布时间:2026/6/19 8:55:03

背景

使用vue3+naive ui 开发网站,在写表单校验规则,其中URL校验项使用了regex,表达式写的有问题,在校验某些URL出现卡顿。最后使用浏览器内置URL类的构建函数来校验,放弃了正则。

REGEX探讨

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z]{2,6})([\/\w \.-]*)*\/?$/.test('https://www.tt.com/km/123/456/1231212121.py?method=view&fdId=112233');

问题出在(\/[\w.-]*)*这一段,它匹配的是/km/123/456/1231212121.py?method=view&fdId=112233

意思是将字符串按/分开,匹配之后的[A-Za-z0-9_.-],遇到新的斜杠就开始新的一轮匹配。

即依次匹配/km 、/123、/456......

这个重复匹配斜杠开头没有问题,问题是后续的字符我限定的太少了,而这里有一个?,导致匹配失败后会重新回溯,重新尝试匹配。

比如一开始匹配的是/km/123/456/1231212121.py,遇到问号,觉得有问题,重新匹配到/km/123/456,然后后面的字符交给后续的表达式匹配。

我想到的解决方法就是直接匹配斜杠开头+任意字符:

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z]{2,6})\/.*/.test('https://www.tt.com/km/123/456/1231212121.py?method=view&fdId=112233');

浏览器内置URL类探讨

export function checkUrl(url) {try {new URL(url);return true;} catch (e) {return false;}
}

当时是询问AI有没有其他的校验方法,比较中意的就是这个。但是这个URL类是浏览器内置的API,我需要确定一下它的构建函数是怎么校验url的。

如何确认URL是内置API

console.log(URL)

output: ƒ URL()

说明就是浏览器的API

确认URL构造函数内容

需要去翻阅浏览器源码

这里参照[chromuim/url](chromium/url at main · chromium/chromium)

阅读readme可以发现是由c++实现的gurl,对js环境表现为URL

校验内容:

scheme(即'http'等前缀) 和 host/path/query

是否有合法的 scheme → DoExtractScheme()

是否属于 special 协议 → IsStandard()

是否能成功拆解 host/path/query → DoParseAuthority() + ParsePath()

是否嵌套结构合法(NoStandardUrl会考虑) → DoParseFileSystemURL()

最终由 Canonicalize() 返回 is_valid_,决定 GURL 是否有效

相关新闻

  • 2025舒适轮胎厂家最新推荐榜:静音耐磨,驾驶体验再升级!
  • 2025 净化铝型材十大品牌之一优选,推荐龙新铝业,最快24小时内发货
  • 2025 权威推荐!净化铝型材品牌 TOP5 排行榜:实力厂家精选,品质之选不容错过

最新新闻

  • 2026海淀名表回收实地探店|劳力士欧米茄出手实测,5家门店真实体验复盘 - 逸程
  • 2026年6月水质监测磁翻板液位计知名品牌排行榜:水处理场景适配性深度测评与选型指南 - 仪表品牌排行榜
  • GLM-5系列如何重塑AI编程的确定性与工程可靠性
  • 2026年6月汉中黄金回收六家门店测评实录 - 余生黄金回收
  • 武汉三新职业技术学校-学校介绍以及招生专业2026年 - 武汉中职最新信息发布
  • 沧州黄金回收市场实地测评:六家正规机构横向对比 - 余生黄金回收

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号