【问题标题】:regex - check url does not have an extension正则表达式 - 检查 url 没有扩展名
【发布时间】:2017-12-17 17:01:28
【问题描述】:

我需要不带扩展名的 url 来在我的代码中执行一些逻辑。

网址:https://stackoverflow.com/questions/ask
网址:https://stackoverflow.com/questions/ask.gif

我尝试了以下方法,我能够匹配最后一个斜杠后的值。

/[^\/]*$/

https://stackoverflow.com/questions/ask
https://stackoverflow.com/questions/ask.gif

如何在正则表达式中检查最后一个斜杠是否有扩展名后的url值?

【问题讨论】:

  • 试试这个\.\w+$
  • 对于gif,您可以使用url.endsWith('.gif')
  • 谢谢@Tushar /\.\w+$/.test("stackoverflow.com/questions/ask.gif") 现在给了我真实。是否可以在正则表达式中否定(切换)布尔值?我需要 false 的 url扩展名。
  • 使用 Not 运算符!/\.\w+$/.test(url)

标签: javascript regex


【解决方案1】:

如果你不需要检查这是否真的是一个 url,你可以使用这个正则表达式来获取扩展:

/\.[a-z0-9]+$/i

这将获取文件扩展名。如果正则表达式不匹配,则没有扩展名。

您可以在regex101.com 轻松试用您的正则表达式

如果这对您有帮助,请告诉我!

【讨论】:

    【解决方案2】:

    试试split('/')方法

    带扩展名的名称

    var a ='https://stackoverflow.com/questions/ask.gif';
    
    console.log(a.split('/').splice(0,a.split('/').length-1).join('/'))

    仅扩展

    var a ='https://stackoverflow.com/questions/ask.gif';
    
    console.log(a.split('.').splice(0,a.split('.').length-1).join('.'))

    【讨论】:

      【解决方案3】:

      试试这个正则表达式:

      if (url.match("/$")) {
         // do this action if last part is slash
      }
      

      【讨论】:

        【解决方案4】:
        [^\/.]*(\.\w+)?$
        

        检查第一组。

        Regex101 demo

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-09
          • 2023-03-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多