当前位置: 首页 > news >正文

JS使用Regex校验出现卡顿

背景

使用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 是否有效

http://www.rkmt.cn/news/18923.html

相关文章:

  • 2025舒适轮胎厂家最新推荐榜:静音耐磨,驾驶体验再升级!
  • 2025 净化铝型材十大品牌之一优选,推荐龙新铝业,最快24小时内发货
  • 2025 权威推荐!净化铝型材品牌 TOP5 排行榜:实力厂家精选,品质之选不容错过
  • 车辆主动悬架线性最优控制(LQR)系统
  • 2025环保/植物/净醛/健康/无味腻子粉厂家推荐榜:专注多场景墙面基底解决方案供应!
  • 2025 工控/核心板/工业/嵌入式主板板卡厂家推荐排行榜:聚焦多领域智能硬件核心供应!
  • 2025 高压/高压空气/氦气/氩气压缩机厂家推荐榜:聚焦多场景压缩空气解决方案!
  • HLT-Q0402-COG-25V-820-J高频电容选型、替代与焊接避坑指南
  • SQL查询,直接生成json结果
  • 变量、常量和作用域
  • MyEMS + 边缘网关:偏远基站如何实现 “无人值守” 下的精准能耗管理?
  • 2025 云栖精选资料:《从云原生到 AI 原生核心技术与最佳实践》PPT 免费下载
  • 基于模拟退火的粒子群优化算法的解析
  • 总线死锁验证方法
  • FPGA MT25QL FLASH
  • 2025 年温控器厂家最新推荐排行榜:涵盖电子式、机械式、双恒温等多类型设备,结合产品性能、创新能力与市场反馈的优质品牌汇总
  • C++练习
  • 2025最新微信公众号文章数据批量导出excel工具1.0版
  • 磊科N60Pro刷机
  • P13763 解题报告
  • 2025 年净化车间源头厂家最新推荐排行榜:精选实力企业,助力企业精准选择优质净化车间服务商无尘/gmp/新能源/锂电池净化车间厂家推荐
  • 市场营销:
  • 【IEEE出版】第五届电子信息工程与计算机技术国际学术会议(EIECT 2025)
  • 【AP出版】第七届文学、艺术与人文发展国际学术会议(ICLAHD 2025)
  • 如何在 Vue 中打印页面:直接用 web-print-pdf(npm 包) - 详解
  • JavaScript内存泄露原因及解决方案
  • 数据类型扩展
  • P2051 [AHOI2009] 中国象棋 个人题解
  • Supabase:无需后端代码的 Web 开发完整解决方案
  • grafana-使用grafana-image-renderer:v4.0.17渲染仪表盘图像