7.7. Weryfikacja poprawności adresów URL według ogólnych reguł

Problem

Chcemy sprawdzić, czy dany fragment tekstu zawiera prawidłowy adres URL, zgodny ze standardem RFC 3986.

Rozwiązanie

  • \A
    (# Schemat
     [a-z][a-z0-9+\-.]*:
     (# Serwer i ścieżka
      //
      ([a-z0-9\-._~%!$&'()*+,;=]+@)?               # Użytkownik
      ([a-z0-9\-._~%]+                             # Nazwany host
      |\[[a-f0-9:.]+\]                             # Host IPv6
      |\[v[a-f0-9][a-z0-9\-._~%!$&'()*+,;=:]+\])   # Host IPvFuture
      (:[0-9]+)?                                   # Port
      (/[a-z0-9\-._~%!$&'()*+,;=:@]+)*/?           # Ścieżka
     |# Ścieżka bez serwera
      (/?[a-z0-9\-._~%!$&'()*+,;=:@]+(/[a-z0-9\-._~%!$&'()*+,;=:@]+)*/?)?
     )
    |# Względny adres URL (bez schematu i serwera)
     (# Ścieżka względna
      [a-z0-9\-._~%!$&'()*+,;=@]+(/[a-z0-9\-._~%!$&'()*+,;=:@]+)*/?
     |# Ścieżka bezwzględna (/[a-z0-9\-._~%!$&'()*+,;=:@]+)+/? ) ) ...

Get Wyra?enia regularne. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.