【问题标题】:Regex to match the URL last part with JavaScript正则表达式将 URL 最后一部分与 JavaScript 匹配
【发布时间】:2012-03-18 17:09:10
【问题描述】:

我有一些网址,我想抓住网址的最后部分。

我的网址格式为

http://www.my-site.dch/wp-content/uploads/2012/02/Tulips.jpg
http://www.my-site.dch/wp-content/uploads/2012/02/Tulips-150x200.jpg
http://www.my-site.dch/wp-content/uploads/2012/02/Tulips-500x350.jpg

而我喜欢捕捉的是 /Tulips.......jpg

我试过了,但没有成功

\/.*(-\d+x\d+)\.(jp(e)?g|png|gif)

有更好的主意吗?

【问题讨论】:

  • 如果你需要大量的 ULR 操作并且你希望你的代码更具可读性,我推荐优秀的 uri.js medialize.github.com/URI.js

标签: javascript regex


【解决方案1】:

看看lastIndexOf方法:

var index = url.lastIndexOf("/");
var fileName = url.substr(index)

【讨论】:

  • 这比上面的都好。
  • 请注意,如果 url 有参数,此解决方案将不起作用。即:www.something.com/image.jpg?size=100x100(赞成,因为它仍然是解决这个问题的好方法)
  • 查看stackoverflow.com/a/11664379/232175 了解处理更复杂 URI (URI.js) 的好库。
【解决方案2】:

以下正则表达式将起作用:

/[^\/]+$/

【讨论】:

  • 这也会获取查询字符串。
【解决方案3】:

使用这个正则表达式:-

^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$

使用$6获取文件名

【讨论】:

    【解决方案4】:

    .*/(.*) 使用此模式并获取组 1。我猜它会起作用。
    .* 是一个贪婪的正则表达式,因此它会匹配到 last 斜杠。之后第 1 组将是最后一个字符(你需要什么)

    【讨论】:

    • 我认为@winSharp93 的回答是最好的。
    【解决方案5】:

    如果你确定所有图片都是jpg:

    /.\/\S+\.jpg/
    

    否则,更笼统:

    /.\/\S+\.\w{2,3}/
    

    即:

    . any char
    \/ the slash before the file name
    \S+ any non blank char to match the file name (at least one)
    \. the file extension separator
    jpg or \w{3,4} the file extension
    

    【讨论】:

      【解决方案6】:

      如果您来这里是为了寻找网址的最后一部分,即使网址以 / 结尾 有一个比任何正则表达式解决方案都简单的解决方案。即使问题是关于正则表达式的,我也会添加它,因为它确实在这里增加了一些价值。

      如果网址是 http://www.my-site.dch/wp-content/uploads/2012/02/Tulips.jpg

      const url = 'http://www.my-site.dch/wp-content/uploads/2012/02/Tulips.jpg'
      const lastpart = url.split('/').filter(e => e).pop() 
      

      在这种情况下,最后一部分将返回最后一部分,即使它以 / 结尾 所以,如果你有这样的网址

      /services/mosquito-control/
      

      如果你想抓到mosquito-control,你会用这个来做的。

      【讨论】:

        猜你喜欢
        • 2018-08-18
        • 1970-01-01
        • 2015-04-12
        • 1970-01-01
        • 2020-01-02
        • 1970-01-01
        • 1970-01-01
        • 2020-02-27
        相关资源
        最近更新 更多