正则表达式 – 正则表达式以匹配相对和绝对URL

前端之家收集整理的这篇文章主要介绍了正则表达式 – 正则表达式以匹配相对和绝对URL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
任何人都想尝试提出一个匹配两者的正则表达式:

> /foo/bar/baz.gif
> / foo / bar /
> http://www.foo.com/foo/bar

我认为用一个正则表达式做这个可能是不可能的,但你永远不会知道.

编辑:澄清一下,我要做的是从文档中挑选出所有URI(不是HTML文档).

(
  ((http|https|ftp)://([\w-\d]+\.)+[\w-\d]+){0,1}  // Capture domain names or IP addresses
  (/[\w~,;\-\./?%&+#=]*)                // Capture paths,including relative
)

这个答案的基本原理:

>整个事情已分组,因此您可以选择整个网址
>协议部分是可选的,但如果提供,还应提供主机名或IP地址(两者都允许的字符数少于URI的其余部分).
>开头的“/”也是可选的.路径可以采用“images / 1.gif”形式,它们相对于当前路径而不是相对于主机名.

注意事项:

>不支持mailto和文件URI.
>句点跟踪的URL(例如句子末尾没有引用)将包括尾随句点.
>由于上面的#3,它将捕获各种各样的东西.如果您可以验证所有路径都不是相对的,则可以在括号外添加“/”,从而需要它.
>如果所有URI都在HTML属性(A,LINK,IMG等)中,则可以通过仅在引号内捕获或至少仅在HTML标记内捕获来更准确地定位URI.

编辑:哎呀,固定关闭paren问题.

猜你在找的正则表达式相关文章