首页 > 解决方案 > 我需要一个正则表达式来匹配字符串

问题描述

我有这样的网址

让 url = " https://storage.cloud.google.com/dev-radius-backend/merchant/docs/1568875072010.jpg?organizationId=837717194226 "

我需要匹配子字符串“/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”

标签: javascriptregex

解决方案


以下正则表达式匹配模式:
\/[^\/]+\/[^\/]+\/[^\/]+(?=\.)\.[^?]+

例子:

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 以外的任何内容/至少一次
(?=\.)- 肯定前瞻断言紧跟在字符串中当前位置之后的是文字点
\.- 匹配文字点
[^?]+匹配任何不是文字问题的内容标记


推荐阅读