【问题标题】:Get filename without extension from URL with conditional从有条件的 URL 获取不带扩展名的文件名
【发布时间】:2014-08-15 04:42:25
【问题描述】:

我见过很多从 URL 或路径获取文件名的例子,但我无法解决这个问题。

我有一个如下所示的网址:

http://www.bob.net/john/john/ken/mary.html 

如果 URL 中同时存在 /john/john,我需要获取 Mary。否则,如果路径中仅存在/john,我需要获取ken

我可以用\/\w*\/\w*\/(\w*)\/(\w*) 得到mary,但这取决于Mary 在第四个斜线之后。

我怎样才能做到这一点?

编辑 - 感谢您迄今为止的回复。

如果 /john 存在于 url 中,是否有机会使这种动态并得到玛丽?不管其他什么?

【问题讨论】:

  • 检查字符串是否包含/john/john——如果是,获取mary:(\w+)$。否则,检查字符串是否包含/john — 如果为真,则获取ken([^\/]+)\/[^\/]+$

标签: javascript regex url path


【解决方案1】:

试试这个模式
^.*?[^\/]\/([^\/]+)\/(?:\1\/[^\/]+\/([^\/.]+)|([^\/]+))
Demo你要找的是第二个捕获组

【讨论】:

  • 谢谢你,这太棒了,而且速度很快。如果 /john 存在于 url 中,是否有机会使这种动态化并获得 mary?不顾别的?
【解决方案2】:

如果John 在路径中,则获取Mary,否则获取John,请使用:

^(?=.*john).*(mary)|.*(ken)

如果匹配,请检查 match[1]match[2]:只会设置一个。

在 Perl 和 PCRE 中,您可以通过条件或分支重置更紧凑地执行此操作。

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 2011-10-02
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多