首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确匹配IDN URL

正确匹配IDN URL
EN

Stack Overflow用户
提问于 2009-12-29 14:39:43
回答 3查看 2.8K关注 0票数 2

我需要帮助构建一个正则表达式,该表达式可以与自由文本中的URL正确匹配.

  • 方案
    • 以下内容之一:ftphttphttps ( ftps是协议吗?)

  • 可选的用户(和可选的pass)
  • 主机(支持IDN)
    • 支持、www、(支持IDN)
    • TLDs的基本过滤(我认为[a-zA-Z]{2,6}就足够了)

  • 可选端口号
  • path (可选,支持Unicode字符)
  • 查询(可选,支持Unicode字符)
  • 片段(可选,支持Unicode字符)

以下是我可以找到的关于子域的信息:

“子域”表示相对依赖,而不是绝对依赖:例如,wikipedia.org包括组织域的子域,en.wikipedia.org包括域wikipedia.org的子域。理论上,这种细分可以降到127个层次,每个DNS标签可以包含多达63个字符,只要整个域名不超过255个字符的总长度。

关于域名本身,我找不到任何可靠的来源,但我认为非IDN 的正则表达式(我不知道如何编写与IDN兼容的版本)如下所示:

代码语言:javascript
复制
[0-9a-zA-Z][0-9a-zA-Z\-]{2,62}

,有人能帮我完成这个正则表达式吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-29 15:06:20

John,著名的大胆火球,有最近的一篇文章,详细说明了他寻找一个良好的URL识别正则字符串。他想出的是:

\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))

这显然也适用于包含Unicode的URL。你需要对它做一些轻微的修改,才能得到你想要的其他东西--方案,用户名,密码等等。艾伦·斯托姆写了一篇文章解释格鲁伯的正则表达式,这是我绝对需要的(regex是如此的写了一篇文章解释格鲁伯的正则表达式

票数 4
EN

Stack Overflow用户

发布于 2009-12-29 14:46:27

如果您需要该协议,并且不太担心假阳性,那么到目前为止,最简单的方法是匹配://周围的所有非空白字符。

票数 0
EN

Stack Overflow用户

发布于 2009-12-29 14:47:50

这会让你大老远跑到那里。如果您需要它更精细,请提供测试数据。

代码语言:javascript
复制
(ftp|https?)://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1974941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档