網站首頁 編程語言 正文
需求介紹
后端的數據接口返回圖片鏈接列表,前端將圖片列表渲染出來,展示的時候,需要顯示圖片名稱。如以下的圖片鏈接,那么怎么比較快速的從鏈接中獲取圖片的名稱呢?
鏈接例子:https://xxxxxxxx.com/Upload/File/Customer/Dtest1202/Customer/T220326-3/1_SalesOrderAttachment_File_41XV.webp?q-sign-algorithm=xxxx
分析
一般來說,圖片的名稱都是在鏈接中最后一個/
之后,如果鏈接有攜帶參數,那么圖片名稱就是在鏈接中最后一個/
之后、?
之前。
那么無論使用什么方法,都必須滿足上述條件。
鏈接中存在參數
鏈接中有參數存在, 即有?
存在:這種比較簡單,因為存在?
這種獨一無二的標志,那么需要先匹配圖片名稱,再匹配?
所在的位置即可:
let url = 'https://xxxxxxxx.com/Upload/File/Customer/Dtest1202/Customer/T220326-3/1_SalesOrderAttachment_File_41XV.webp?q-sign-algorithm=xxxx' // 匹配帶有英文、_、.、數字的圖片名稱 const reg = /[\w.]+(?=\?)/g // 匹配帶有中文、英文、_、.、數字的圖片名稱 const regWithChinese = /[\w.\u4e00-\u9fa5]+(?=\?)/g const result = url.match(reg) // 若不存在符合的條件,result值為null,因此需要進行判斷 const imgName = result ? result[0] : '不存在' console.log('imgName: ', imgName); // 輸出 imgName: 1_SalesOrderAttachment_File_41XV.webp
鏈接中不存在參數
鏈接中不存在參數,即沒有?
存在: 這種比較麻煩,沒有?
,那么剩下的判斷條件就是圖片名稱處于最后一個/
的之后位置了,這個有三種方法:
方法一
第一種利用/
為標識,匹配所有非/
的字符串,取最后一個:
const url = 'https://xxxxxxxx.com/Upload/File/Customer/Dtest1202/Customer/T220326-3/1_SalesOrderAttachment_File_41XV.webp' const reg = /[^/]+/g const imgName = url.match(reg).filter(item => item).pop() console.log('imgName: ', imgName); // 輸出 imgName: 1_SalesOrderAttachment_File_41XV.webp
方法二
第二種是先通過(?!.*/)
找出不是以/
結尾的字符串的起始位置,可以理解為最后一個/
后面的位置,然后匹配字符串:
const url = 'https://xxxxxxxx.com/Upload/File/Customer/Dtest1202/Customer/T220326-3/1_SalesOrderAttachment_File_41XV.webp' const reg = /(?!.*\/).*/g const imgName = url.match(reg).filter(item => item).pop() console.log('imgName: ', imgName); // 輸出 imgName: 1_SalesOrderAttachment_File_41XV.webp
方法三
第三種是在前兩種結合,利用/
為標識,匹配所有非/
的字符串,然后找出位置不是在/
前面的字符串:
const url = 'https://xxxxxxxx.com/Upload/File/Customer/Dtest1202/Customer/T220326-3/1_SalesOrderAttachment_File_41XV.webp' const reg = /[^/]+(?!.*\/)/g const imgName = url.match(reg).filter(item => item).pop() console.log('imgName: ', imgName); // 輸出 imgName: 1_SalesOrderAttachment_File_41XV.webp
總結
原文鏈接:https://juejin.cn/post/7102672603210317860
- 上一篇:C++圖文并茂講解繼承_C 語言
- 下一篇:C++圖文并茂講解類型轉換函數_C 語言
相關推薦
- 2022-09-03 Go語言函數的延遲調用(Deferred?Code)詳解_Golang
- 2023-02-15 docker容器存儲清理刪除所需命令和方法_docker
- 2022-07-12 快速上手Vim編輯器
- 2023-07-04 解決Uncaught (in promise) TypeError: Cannot read pro
- 2023-01-14 C#實現啟動項管理的示例代碼_C#教程
- 2022-03-19 MongoDB數據庫授權認證的實現_MongoDB
- 2022-04-06 Qt實現導出QTableWidget/QTableView數據_C 語言
- 2022-09-25 CSS-元素隱藏的兩種主要方式
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支