gpt4 book ai didi

javascript - 用于排除包含文件路径的 URL 的正则表达式

转载 作者:行者123 更新时间:2023-11-29 10:58:17 34 4
gpt4 key购买 nike

我试图只匹配不包含 ? 字符、不以 \ 字符结尾且不以文件结尾的 URL路径(.jpg、.aspx 等 - 需要排除所有文件扩展名)

这是预期的结果:

  1. 不匹配 - http://mywebsite.com/some-path/test.jpg
  2. 不匹配 - http://mywebsite.com/some-path/test.jpg/
  3. 匹配 - http://mywebsite.com/some-path/test
  4. 不匹配 - http://mywebsite.com/some-path/test?v=ASAS77162UTNBYV77

我的正则表达式 - [^.\?]*[^/]*^[^?]*[^/]$,在大多数情况下运行良好,但对于这个 http://mywebsite.com/some-path/test.jpg(匹配,但不匹配)

最佳答案

以下模式似乎有效:

^(?!.*\?)(?!.*\/[^/]+\.[^/]+$).*[^/]$

这使用两个负前瞻来满足您的要求:

(?!.*\?)                - no ? appears anywhere in the URL
(?!.*\/[^\/]+\.[^\/]+$) - no extension appears

URL 不以路径分隔符结尾的要求是通过在 URL 的每一端匹配该字符来按字面给出的。

console.log(/^(?!.*\?)(?!.*\/[^/]+\.[^/]+$).*[^/]$/.test('http://mywebsite.com/some-path/test'));
console.log(/^(?!.*\?)(?!.*\/[^/]+\.[^/]+$).*[^/]$/.test('http://mywebsite.com/some-path/test.jpg'));
console.log(/^(?!.*\?)(?!.*\/[^/]+\.[^/]+$).*[^/]$/.test('http://mywebsite.com/some-path/test?v=ASAS77162UTNBYV77'));
console.log(/^(?!.*\?)(?!.*\/[^/]+\.[^/]+$).*[^/]$/.test('http://mywebsite.com/some-path/test.jpg/'));

关于javascript - 用于排除包含文件路径的 URL 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52605413/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com