За последние 24 часа нас посетили 15035 программистов и 1766 роботов. Сейчас ищут 1476 программистов ...

Проверка схемы URL

Тема в разделе "Регулярные выражения", создана пользователем Alex5646, 31 мар 2016.

  1. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Код (PHP):
    1. /^
    2.   # Схема
    3.   ((ftp|http|https)://)?
    4.  
    5.   # Логин и пароль
    6.   (\w:\w@)?
    7.  
    8.   # Хост
    9.   (
    10.     # IP
    11.     (
    12.       (1?\d?\d|2[0-4]\d|25[0-5])\.){3,3}
    13.       (1?\d?\d|2[0-4]\d|25[0-5])
    14.     ) |
    15.  
    16.     # Домен
    17.     (
    18.       (
    19.         # Больше второго уровня
    20.         ([\wа-я-]{0,255}\.){0,127}
    21.         ([\wа-я-]{1,63}\.)
    22.         |
    23.         # Второй уровень
    24.         ([\wа-я-]{0,63}\.))
    25.       )?
    26.       # Первый уровень
    27.       ([\wа-я]{2,}
    28.     )
    29.  
    30.     # Порт
    31.     (
    32.       :
    33.       (
    34.         \d{2,5}
    35.         (:\d{2,5})?
    36.       )
    37.     )?
    38.  
    39.     # Путь. Люди ведь в пути могут писать любой бред?
    40.     (.*)?
    41.  
    42.     # Параметры
    43.     (\?\w*)?
    44.  
    45.     # Якорь
    46.     (\#\w*)?
    47.   )
    48. $/
    Вот моя регулярка. Меня интересует какие есть ограничения в логине, пароле, пароле, порте, параметрах и якоре. Попробовал погуглить не чего толкового не нашёл. Думаю \w* не достаточно, так как лубой бред пройдёт по регулярке.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а что ты делаешь?
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  4. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Хочу JS проверить URL, потом его распарсить.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Можно создать тег <а> и присвоить ему, и тут же спросить у него схему.
     
  6. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    igordata, А можно по подробней? При чём здесь тэг a?
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    https://habrahabr.ru/post/252533/

    Код (PHP):
    1. var url = document.createElement('a');
    2. url.href = 'http://example.com:81/path/page?a=1&b=2#hash';
    3.  
    4. console.log(
    5.     url.href + '\n' +           // the full URL
    6.     url.protocol + '\n' +       // http:
    7.     url.hostname + '\n' +       // example.com
    8.     url.port + '\n' +           // 81
    9.     url.pathname + '\n' +       // /path/page
    10.     url.search + '\n' +         // ?a=1&b=2
    11.     url.hash                    // #hash
    12. );
    13.  
     
  8. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Достаточно странно, не когда бы не подумал что так можно распарсить url.

    Добавлено спустя 41 секунду:
    А я тут регуялярки писал)))
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.097
    Симпатии:
    1.241
    Адрес:
    там-сям
    никогда бы ни подумал.
    мне не́когда.

    Добавлено спустя 1 минуту 41 секунду:
    поподробней
     
  10. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    тут отрицание/противопоставление поэтому не подумал