我想提取以下字符串:
/e670d0d1-bcf2-47f7-879b-64ab40600ff8-u1/mask_00005.png
来自此测试字符串:
https://s3.us-east-005.backblazeb2.com/ph/e670d0d1-bcf2-47f7-879b-64ab40600ff8-u1/mask_00005.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=005dc68faa31bb70000000004%2F20240417%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240417T092401Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=a82f66f63086597ab49651ba91edb31133875d64415ecb54317c8766df0b0950
(?<=https:\/\/s3\.us-east-005\.backblazeb2\.com\/ph)(.*)(?=\?X-Amz-Algorithm)
尝试过https://regex101.com/,但它没有返回任何内容,我不明白为什么。
您可以使用 UUID 正则表达式作为基础,并添加子路径和文件名。
const uuidRegex = /[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}/
此外,您还可以使用正向前瞻
(?=<?)
在查询参数开始处停止。
const url = 'https://s3.us-east-005.backblazeb2.com/ph/e670d0d1-bcf2-47f7-879b-64ab40600ff8-u1/mask_00005.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=005dc68faa31bb70000000004%2F20240417%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240417T092401Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=a82f66f63086597ab49651ba91edb31133875d64415ecb54317c8766df0b0950'
const regex = /\/[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}-\w{2}\/(\w+\.[a-z]+)(?=<?)/;
const target = '/e670d0d1-bcf2-47f7-879b-64ab40600ff8-u1/mask_00005.png';
const [found, filename] = url.match(regex);
console.log(found);
console.log(found === target); // true
console.log(filename); // mask_00005.png