আছে Uri.IsWellFormedUriString
এবং Uri.TryCreate
পদ্ধতি, কিন্তু তারা ফিরে বলে মনে হচ্ছে true
ফাইল পাথ ইত্যাদি জন্য
ইনপুট বৈধকরণের জন্য কোনও স্ট্রিং একটি বৈধ (অগত্যা সক্রিয় নয়) এইচটিটিপি ইউআরএল কিনা তা আমি কীভাবে চেক করব?
আছে Uri.IsWellFormedUriString
এবং Uri.TryCreate
পদ্ধতি, কিন্তু তারা ফিরে বলে মনে হচ্ছে true
ফাইল পাথ ইত্যাদি জন্য
ইনপুট বৈধকরণের জন্য কোনও স্ট্রিং একটি বৈধ (অগত্যা সক্রিয় নয়) এইচটিটিপি ইউআরএল কিনা তা আমি কীভাবে চেক করব?
উত্তর:
এইচটিটিপি ইউআরএলগুলি যাচাই করার জন্য এটি চেষ্টা করুন ( uriName
আপনি যে ইউআরআই পরীক্ষা করতে চান):
Uri uriResult;
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult)
&& uriResult.Scheme == Uri.UriSchemeHttp;
অথবা, আপনি যদি HTTP এবং এইচটিটিপিএস উভয়ই URL টি বৈধ হিসাবে গ্রহণ করতে চান (J0e3gan এর মন্তব্যে):
Uri uriResult;
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult)
&& (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps;
এই পদ্ধতিটি http এবং https উভয়ই সূক্ষ্মভাবে কাজ করে। মাত্র একটি লাইন :)
if (Uri.IsWellFormedUriString("https://www.google.com", UriKind.Absolute))
এমএসডিএন: ইসওয়েলফর্মড ইউরিস্ট্রিং
file://
বা ldap://
। এই সমাধানটি স্কিমের বিরুদ্ধে একটি চেকের সাথে তৈরি করা উচিত - যেমনif (uri.Scheme != Uri.UriSchemeHttp && uri.Scheme != Uri.UriSchemeHttps) ...
public static bool CheckURLValid(this string source)
{
Uri uriResult;
return Uri.TryCreate(source, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp;
}
ব্যবহার:
string url = "htts://adasd.xc.";
if(url.CheckUrlValid())
{
//valid process
}
আপডেট: (কোডের একক লাইন) ধন্যবাদ @ GoClimbColorado
public static bool CheckURLValid(this string source) => Uri.TryCreate(source, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps;
ব্যবহার:
string url = "htts://adasd.xc.";
if(url.CheckUrlValid())
{
//valid process
}
Uri.TryCreate(source, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps
এখানে সকল উত্তর পারেন অনুমতি স্কিমের সঙ্গে URL গুলি (যেমন, file://
, ftp://
) অথবা পাঠযোগ্য যে URL গুলি দিয়ে শুরু করবেন না প্রত্যাখ্যান http://
বা https://
(যেমন, www.google.com
) যা ভালো নয় তখন ব্যবহারকারী ইনপুট সঙ্গে তার আচরণ ।
আমি এটি কীভাবে করব তা এখানে:
public static bool ValidHttpURL(string s, out Uri resultURI)
{
if (!Regex.IsMatch(s, @"^https?:\/\/", RegexOptions.IgnoreCase))
s = "http://" + s;
if (Uri.TryCreate(s, UriKind.Absolute, out resultURI))
return (resultURI.Scheme == Uri.UriSchemeHttp ||
resultURI.Scheme == Uri.UriSchemeHttps);
return false;
}
ব্যবহার:
string[] inputs = new[] {
"https://www.google.com",
"http://www.google.com",
"www.google.com",
"google.com",
"javascript:alert('Hack me!')"
};
foreach (string s in inputs)
{
Uri uriResult;
bool result = ValidHttpURL(s, out uriResult);
Console.WriteLine(result + "\t" + uriResult?.AbsoluteUri);
}
আউটপুট:
True https://www.google.com/
True http://www.google.com/
True http://www.google.com/
True http://google.com/
False
http://mooooooooo
, আসলে একটি বৈধ উরি। অতএব, আপনি Uri.IsWellFormedUriString
"http: //" সন্নিবেশ করার পরে চেক করতে পারবেন না এবং আপনি যদি এটির আগে পরীক্ষা করেন তবে যা কিছু নেই Scheme
সেটিকে প্রত্যাখ্যান করা হবে। এর s.Contains('.')
পরিবর্তে আমরা যা যা করতে পারি তা আমরা তার পরিবর্তে পরীক্ষা করে দেখছি।
IsWellFormedUriString
যোগ করার আগে ব্যবহার করেন তবে আপনি http://
পছন্দ মতো জিনিসগুলি প্রত্যাখ্যান করবেন google.com
এবং এটি যুক্ত করার পরে যদি আপনি এটি ব্যবহার করেন তবে এটি http://
সত্য হয়ে যাবে http://mooooooooo
। এজন্য আমি স্ট্রিংয়ের .
পরিবর্তে কোনও স্ট্রিং রয়েছে কিনা তা পরীক্ষা করার পরামর্শ দিয়েছিলাম ।
এটি HTTP (গুলি) কিনা তা Uri.TryCreate
পরীক্ষা Uri.Scheme
করে দেখার পরে ।
চেষ্টা কর:
bool IsValidURL(string URL)
{
string Pattern = @"^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$";
Regex Rgx = new Regex(Pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
return Rgx.IsMatch(URL);
}
এটি এর মতো ইউআরএল গ্রহণ করবে:
এটি প্রত্যাবর্তন করবে:
Uri.IsWellFormedUriString(a.GetAttribute("href"), UriKind.Absolute)
Uri uri = null;
if (!Uri.TryCreate(url, UriKind.Absolute, out uri) || null == uri)
return false;
else
return true;
url
আপনি পরীক্ষা করতে হবে স্ট্রিং এখানে ।
bool passed = Uri.TryCreate(url, UriKind.Absolute, out Uri uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps)