2016-07-27 6 views
0

を使用していない場合、指定された文字列が有効なURLであるかどうかを確認する方法があります。ソリューションはC++でなければならず、インターネットなしで動作するはずです。指定された文字列をチェックするには、有効なURLか、またはC++コード

例文字列は

good.morning 
foo.goo.koo 
https://hhhh 
hdajdklbcbdhd 
8881424.www.hfbn55.co.in/sdfsnhjk 
://dgdh24.vom 
dfgdfgdf(2001)/.com/sdgsgh 
\adiihsdfghnhg.co.inskdhhj 
aser//www.gtyuh.co.uk/kdsfgdfgfrgj 

答えて

1

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ようsymphatetic正規表現を選んだされています。

使用 std regex

、またはboost regexあなたが持っていない場合、C++ 11:

if (std::regex_match ("http://subject", std::regex("^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$"))) { 
    // ... 
} 
0

あなたは正規表現を使用することができます。

C++ 11の正規表現は、STDライブラリ regex c++11に組み込まれています。

何らかの理由でC++ 11を使用できない場合は、ブーストライブラリを使用できます。あなたはもっと自分に合った正規表現を見つけることができる[このサイト](https://mathiasbynens.be/demo/url-regex)から

#include <regex> //require c++11 
// ... 

// regex pattern 
std::string pattern = "https?:\/\/(www\.)?[[email protected]:%._\+~#=]{2,256}\.[a-z]{2,4}\b([[email protected]:%_\+.~#?&//=]*)"; 

// Construct regex object 
std::regex url_regex(pattern); 

// An url-string for example 
std::string my_url = "http://www.google.com/img.png"; 

// Check for match 
if (std::regex_match(my_url, url_regex) == true) { 
    std::cout << "This is a well-formed url\n"; 
} else { 
    std::cout << "Ill-formed url\n"; 
} 
+1

とにかくあなたがURLのパタパタをチェックできますニーズ。 –

関連する問題