【问题标题】:Regex for steam-like urls类似蒸汽的网址的正则表达式
【发布时间】:2015-05-03 19:28:53
【问题描述】:

我不知道如何构建一个正则表达式来解决我的需求。我无法理解这种黑暗艺术,所以我需要你的帮助来解决我的问题。

我想通过使用正则表达式模式在字符串中找到一个 url。如何在字符串中找到这种类型的 url?

Lorem ipsum foo://bar1234 dolor sit amet.

它应该从 foo:// 获取字符串,直到遇到空格。 bar1234 部分是完全随机的,它可以包含数字、字母或特殊字符,所以我在这里不需要任何规则。我该怎么做?

我从某种模式创建器应用程序和 https 示例构建了一个模式,但它似乎不起作用。 ^(foo?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$

【问题讨论】:

  • @kaveman 抱歉,我刚刚忘记添加我的试用版。这对我来说真的很复杂,所以我不能确定哪一部分出了问题。
  • 什么编程语言? javascript?
  • @FlorianSchmidinger 是的 javascript。
  • 只是对未来的提示:也为您的编程语言添加标签...例如.net regex 比 js 具有更多功能..
  • 类似,但一些编程语言扩展了它的功能,所以你有更多的功能来定义你的模式。

标签: javascript regex url


【解决方案1】:

为什么不保持简单并使用:

/\bfoo:\/\/\S+/g

Check RegEx Demo

这意味着首先使用单词边界匹配文字 foo://,然后匹配 \S+(1 个或多个非空格字符)。

【讨论】:

  • 谢谢你,它的工作!不过开心豆的有什么区别,看起来更矮了。我错过了什么吗?
  • 为了避免匹配abcfoo://,我只是保留了一点时间来保护匹配,但是(?=\s|$)可以安全取出(见更新的)
【解决方案2】:
foo:\/\/(\S+)

如果格式化像你说的那么简单,这应该可以满足你的要求。

要测试这种东西,您可以随时使用https://regex101.com/ 之类的网站,这应该会让您的测试更容易。

【讨论】:

    【解决方案3】:

    如果你想从 foo 开始:

    foo:\/\/([^\s]+)
    

    如果您还想在正则表达式中保留 foo:

    (foo:\/\/[^\s]+)
    

    【讨论】:

    • foo:\/\/([^\s]+)foo:\/\/(\S+) 没有区别
    • 没错,但我写了这两种情况 - 是否将 foo:// 保留在正则表达式中,这取决于他最终想要实现的目标
    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多