javascript - 我需要一个正则表达式来匹配字符串
问题描述
我有这样的网址
我需要匹配子字符串“/merchant/docs/1568875072010.jpg”
我找到了 regEx 来找到 url 的基础,但由于在这种情况下 filname 介于两者之间而不是结尾,所以我自己无法编写 regEx。
但是我找到了一种方法,效率不是很高
var pathArray = url.split('/');
var a = pathArray[6].split('?')
var fileName = '/' + pathArray[4] + '/' + pathArray[5] + '/' + a[0]
我需要文件名是“/merchant/docs/1568875072010.jpg”
解决方案
以下正则表达式匹配模式:
\/[^\/]+\/[^\/]+\/[^\/]+(?=\.)\.[^?]+
例子:
var url = 'https://storage.cloud.google.com/dev-radius-backend/merchant/docs/1568875072010.jpg?organizationId=837717194226';
var match = url.match(/\/[^\/]+\/[^\/]+\/[^\/]+(?=\.)\.[^?]+/);
if (match) {
console.log(match[0]); // "/merchant/docs/1568875072010.jpg"
document.getElementById('result').innerText = match[0];
}
<span id="result"></span>
正则表达式的解释:
\/
- 匹配文字/
[^\/]+
- 匹配除 a 以外的任何内容/
至少一次
(?=\.)
- 肯定前瞻断言紧跟在字符串中当前位置之后的是文字点
\.
- 匹配文字点
[^?]+
匹配任何不是文字问题的内容标记
推荐阅读
- python - 每 x 秒加载 dict 然后传递给 df 并清除 dict
- php - 如果在 DB 中找不到数据,用 php 发送什么错误代码?
- unity3d - Unity:更新 UI 文本的文本字段会在前一个字符串的顶部绘制新字符串
- r - R:为面板数据中的每个日期创建具有四分位数排名的列
- excel - VBA - 重复数据的范围选择
- javascript - Ajax 成功事件在显示 200 状态代码的网络选项卡中不起作用
- android - 图形视图 - X 轴不是实时刷新 - Android 工作室
- angularjs - 使用 Injector 类代替 ReflectiveInjector 类
- excel - Excel 问题:过滤第 1 列,在第 2 列中查找最后一个,返回值第 3 列
- android - Flutter 有状态的小部件,子级不更新状态