Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
millworm
0 / 0 / 1
Регистрация: 27.04.2012
Сообщений: 74
#1

Проверка введенного url адреса на корректность - C++

28.02.2014, 17:58. Просмотров 457. Ответов 4
Метки нет (Все метки)

Здравствуйте, требуется ваша помощь
не могли бы подсказать как организовать проверку введенного url адреса на корректность?
есть конечно вариант вбить эту строку как символьный массив и проверять по символьно протокол http или https но вот как быть дальше ума не приложу
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2014, 17:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проверка введенного url адреса на корректность (C++):

Проверка адреса файла, введенного с клавиатуры
Мне нужно ввести адрес файла с клавиатуры и что бы проверяло, есть он или...

Функция для проверки ip адреса на корректность
всем привет. Я тут новенький и вообще новачок в программировании. Не могли бы...

Нужно проверить на корректность ввода E-mail адреса
Допустим пользователь вводит _____@___.___ Как мы можем проверить эти три ...

Проверка на корректность
Программа на консоли, для высчитывания логического выражения, подскажите,...

Проверка строки на корректность
#include<iostream> #include<cstring> #include <conio.h> using namespace std;...

Проверка на корректность операции
Добрый день. Не знаю как лучше задать вопрос. Смысл идеи таков: Есть...

4
Avazart
Эксперт С++
7685 / 5594 / 543
Регистрация: 10.12.2010
Сообщений: 25,074
Записей в блоге: 17
28.02.2014, 18:03 #2
Ну не проще сразу проверить его сделав HTTP-запрос и проверить результат ?
0
millworm
0 / 0 / 1
Регистрация: 27.04.2012
Сообщений: 74
28.02.2014, 18:09  [ТС] #3
я так же сказал преподавателю, но ему так не надо
0
Avazart
Эксперт С++
7685 / 5594 / 543
Регистрация: 10.12.2010
Сообщений: 25,074
Записей в блоге: 17
28.02.2014, 18:37 #4
Цитата Сообщение от millworm Посмотреть сообщение
есть конечно вариант вбить эту строку как символьный массив и проверять по символьно протокол http или https но вот как быть дальше ума не приложу
Тогда только так.
Нужно читать про URI/URL и на основе этого делать анализ.
Кроме http и https, к примеру, нужно не допускать кириллицу (и других не анси символов).
0
DrOffset
7518 / 4514 / 1097
Регистрация: 30.01.2014
Сообщений: 7,362
28.02.2014, 19:32 #5
Лучший ответ Сообщение было отмечено millworm как решение

Решение

Цитата Сообщение от millworm Посмотреть сообщение
не могли бы подсказать как организовать проверку введенного url адреса на корректность?
Ну например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string>
#include <boost/regex.hpp>
 
int main()
{
    try
    {
        boost::regex urlCheck("^((https?)|(ftp))://"                         // protocol
            "(([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+"         // username
            "(:([a-z0-9$_\\.\\+!\\*\\'\\(\\),;\\?&=-]|%[0-9a-f]{2})+)?"      // password
            "@)?(?#"                                                         // auth requires @
            ")((([a-z0-9]\\.|[a-z0-9][a-z0-9-]*[a-z0-9]\\.)*"                // domain segments AND
            "[a-z][a-z0-9-]*[a-z0-9]"                                        // top level domain  OR
            "|((\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])\\.){3}"
            "(\\d|[1-9]\\d|1\\d{2}|2[0-4][0-9]|25[0-5])"                     // IP address
            ")(:\\d+)?"                                                      // port
            ")(((\\/+([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)*" // path
            "(\\?([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)"      // query string
            "?)?)?"                                                          // path and query string optional
            "(#([a-z0-9$_\\.\\+!\\*\\'\\(\\),;:@&=-]|%[0-9a-f]{2})*)?"       // fragment
            "$");
 
        std::string url;
        std::getline(std::cin, url);
 
        if(boost::regex_match(url, urlCheck))
        {
            std::cout << "URL is correct.\n";
        }
        else
        {
            std::cout << "URL is not correct.\n";
        }
    }
    catch(std::exception const & e)
    {
        std::cerr << e.what();
    }
}
3
28.02.2014, 19:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2014, 19:32
Привет! Вот еще темы с решениями:

Считывание, проверка на корректность
Как считать uint64_t с клавиатуры, вывести на экран и проверить, что это именно...

Проверка указателя на корректность
Есть у меня указатель class* test = new class(); И он в цикле вечно...

Проверка на корректность ввода года
помогите сделать так, что бы kolvostr нельзя было присвоить 0, а год должен...

Проверка на корректность логического выражения
Добрый вечер. На входе имеем логического выражение которое может содержать :...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru