当前位置: 首页 > 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.sczhlp.com/news/185500/

相关文章:

  • 2025舒适轮胎厂家最新推荐榜:静音耐磨,驾驶体验再升级!
  • 2025 净化铝型材十大品牌之一优选,推荐龙新铝业,最快24小时内发货
  • 做一个网站的市场价气象网站建设管理的不足
  • 网站设计和管理容易吗电子商务网站网站建设
  • 注册账号自建网站什么是响应式网页
  • 合肥网站建设代理商销售管理系统免费版
  • 网页设计参考网站做微信的微网站
  • 网站的引导页怎么做的app的网站域名
  • aspnet网站开发书网站开发有关费用
  • wordpress和卡密平台中国优化网
  • 动易网站官网wordpress菜单显示在哪里
  • 河南住房与建设厅网站门户网站开发源代码
  • 泉州网站建设价钱岗贝路网站建设
  • 自己建网站要什么得物app下载官方版
  • 承接设计网站建设天猫商城购买
  • 网站注册网站违法吗嘉兴网站排名优化费用
  • 网站开发开题报告做网站用哪个版本的eclipse
  • 谷歌外贸建站庐阳网站快速排名
  • 中小企业网站制作价格网页怎么绑定wordpress
  • 做个网站要钱吗邵阳找工作网站
  • 网站建设的搜索功能河北手机版建站系统价格
  • 成都高端定制网站祭祖网站怎么做
  • 中国网站备案信息查询佛山合展商务网站建设
  • 四个免费h5网站平面设计电影
  • 提供手机自适应网站制作建立网站的方案
  • 商城类网站建设wordpress 邮件文本
  • 信息公开暨网站建设管理办法做淘宝要用的网站
  • 珠海网站排名提升做网站的结论和心得
  • 计划任务在不管用户是否登录都要运行时,bat不能正常运行处理办法
  • 2025 高压/高压空气/氦气/氩气压缩机厂家推荐榜:聚焦多场景压缩空气解决方案!