using System;
using System.IO;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
Console.WriteLine(IsValidHttpsUrl("192.168.0.1:12345/testdir/testdir_2"));
Console.WriteLine(IsValidTcpOrUdpUrl("mydomain.fr:31337"));
}
public static bool IsValidHttpsUrl(string url)
{
const string Pattern = @"^(([a-z0-9-]+\.)+[a-z]{2,6}|((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9]))(:(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}))?(/[\w/.]*)?$";
var regex = new System.Text.RegularExpressions.Regex(Pattern, System.Text.RegularExpressions.RegexOptions.Compiled);
return regex.Match(url).Success;
}
public static bool IsValidTcpOrUdpUrl(string url)
{
const string Pattern = @"^(([a-z0-9-]+\.)+[a-z]{2,6}|((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])):(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3})$";
var regex = new System.Text.RegularExpressions.Regex(Pattern, System.Text.RegularExpressions.RegexOptions.Compiled);
return regex.Match(url).Success;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlDb25zb2xlLldyaXRlTGluZShJc1ZhbGlkSHR0cHNVcmwoIjE5Mi4xNjguMC4xOjEyMzQ1L3Rlc3RkaXIvdGVzdGRpcl8yIikpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKElzVmFsaWRUY3BPclVkcFVybCgibXlkb21haW4uZnI6MzEzMzciKSk7Cgl9CglwdWJsaWMgc3RhdGljIGJvb2wgSXNWYWxpZEh0dHBzVXJsKHN0cmluZyB1cmwpCgl7CgkgICAgY29uc3Qgc3RyaW5nIFBhdHRlcm4gPSBAIl4oKFthLXowLTktXStcLikrW2Etel17Miw2fXwoKDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XT9bMC05XSlcLil7M30oMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldP1swLTldKSkoOig2NTUzWzAtNV18NjU1WzAtMl1cXGR8NjVbMC00XVxcZHsyfXw2WzAtNF1cZHszfXxbMS01XVxkezR9fFsxLTldXGR7MCwzfSkpPygvW1x3Ly5dKik/JCI7CgkKCSAgICB2YXIgcmVnZXggPSBuZXcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4KFBhdHRlcm4sIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleE9wdGlvbnMuQ29tcGlsZWQpOwoJICAgIHJldHVybiByZWdleC5NYXRjaCh1cmwpLlN1Y2Nlc3M7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgYm9vbCBJc1ZhbGlkVGNwT3JVZHBVcmwoc3RyaW5nIHVybCkKCXsKCSAgICBjb25zdCBzdHJpbmcgUGF0dGVybiA9IEAiXigoW2EtejAtOS1dK1wuKStbYS16XXsyLDZ9fCgoMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldP1swLTldKVwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV0/WzAtOV0pKTooNjU1M1swLTVdfDY1NVswLTJdXGR8NjVbMC00XVxkezJ9fDZbMC00XVxkezN9fFsxLTVdXGR7NH18WzEtOV1cZHswLDN9KSQiOwoJCgkgICAgdmFyIHJlZ2V4ID0gbmV3IFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleChQYXR0ZXJuLCBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhPcHRpb25zLkNvbXBpbGVkKTsKCSAgICByZXR1cm4gcmVnZXguTWF0Y2godXJsKS5TdWNjZXNzOwoJfQp9