正则表达任意URL

时间:2013-10-01 14:49:49

标签: regex url

不确定网址(http://tools.ietf.org/html/rfc3986)是否是正则表达式,但是URL的最强大和正式的正则表达式是什么?

有许多正则表达方言(perl,emacs lisp,php,python等),但任何方言都可以接受。

1 个答案:

答案 0 :(得分:0)

  ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
   12            3  4          5       6  7        8 9
     

上面第二行中的数字只是为了提高可读性;      它们表示每个子表达的参考点(即每个子表达式)      配对括号)。我们引用子表达式匹配的值      <n>$<n>。例如,将上述表达式与

匹配
  http://www.ics.uci.edu/pub/ietf/uri/#Related
     

导致以下子表达式匹配:

  $1 = http:
  $2 = http
  $3 = //www.ics.uci.edu
  $4 = www.ics.uci.edu
  $5 = /pub/ietf/uri/
  $6 = <undefined>
  $7 = <undefined>
  $8 = #Related
  $9 = Related
     

其中表示组件不存在,按原样      上例中查询组件的情况。因此,我们      可以确定五个组件的值

  scheme    = $2
  authority = $4
  path      = $5
  query     = $7
  fragment  = $9

通过http://tools.ietf.org/html/rfc3986#appendix-B