Regex روشی عالی برای انجام بررسیهای مبتنی بر الگوی اولیه بر روی دادههای ارزشمند است.
برنامه نویسی کار با داده های متنی ساختاریافته و بدون ساختار را آسان کرده است. ابزارهایی مانند عبارات منظم و کتابخانه های خارجی این کارها را بسیار آسان می کنند.
شما می توانید از اکثر زبان ها، از جمله پایتون و جاوا اسکریپت، برای اعتبارسنجی URL ها با استفاده از یک عبارت معمولی استفاده کنید. این regex مثال کامل نیست، اما میتوانید از آن برای بررسی URLها برای موارد استفاده ساده استفاده کنید.
Regex برای اعتبارسنجی URL ارائه شده در این مقاله کامل نیست. ممکن است چندین نمونه از URL های معتبر وجود داشته باشد که ممکن است در این اعتبار سنجی regex ناموفق باشد. این شامل آدرسهای اینترنتی شامل آدرسهای IP، کاراکترهای غیرASCII و پروتکلهایی مانند FTP است. Regex زیر فقط رایج ترین URL ها را تأیید می کند.
عبارت منظم برای اعتبارسنجی URL
Regex یک URL را در صورتی معتبر در نظر می گیرد که شرایط زیر را داشته باشد:
- رشته باید با http یا https و سپس :// شروع شود.
- طول ترکیبی زیر دامنه و دامنه ریشه باید بین 2 تا 256 باشد. فقط باید دارای نویسه های الفبایی و/یا نویسه های خاص باشد.
- TLD (دامنه سطح بالا) فقط باید دارای حروف الفبا باشد و باید بین دو تا شش کاراکتر باشد.
- انتهای رشته URL می تواند شامل کاراکترهای الفبایی و/یا کاراکترهای خاص باشد. و می تواند صفر یا چند بار تکرار شود.
شما می توانید یک URL در جاوا اسکریپت را با استفاده از عبارت منظم زیر تأیید کنید:
^(http(s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$
به طور مشابه، می توانید از regex زیر برای اعتبارسنجی URL در پایتون استفاده کنید:
^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$
جایی که:
- (http|https)://) مطمئن می شود که رشته با http یا https و سپس :// شروع می شود.
- [-a-zA-Z0-9@:%._\\+~#?&//=] نویسه های الفبایی و/یا نویسه های خاص را نشان می دهد. اولین نمونه از این مجموعه مجموعه ای از کاراکترها را نشان می دهد که در قسمت های زیر دامنه و دامنه ریشه مجاز است. در حالی که نمونه دوم این مجموعه مجموعه ای از کاراکترها را نشان می دهد که باید در رشته پرس و جو یا قسمت زیردایرکتوری مجاز شوند.
- {2,256} نشان دهنده 2 تا 256 بار (هر دو شامل) نشانگر وقوع است. این نشان می دهد که طول ترکیبی زیر دامنه و دامنه باید بین 2 تا 256 باشد.
- \. نشان دهنده کاراکتر نقطه است.
- [a-z]{2،6} به معنای هر حرف کوچک از a تا z با طول بین دو تا شش است. این مجموعه ای از کاراکترها را نشان می دهد که باید در قسمت دامنه سطح بالا مجاز شوند.
- \b نشان دهنده مرز یک کلمه، یعنی شروع یک کلمه یا پایان یک کلمه است.
- * یک عملگر تکراری است که صفر یا چند نسخه از رشته پرس و جو، پارامترها یا زیر شاخه ها را نشان می دهد.
- ^ و $ به ترتیب شروع و پایان رشته را نشان می دهند.
اگر از عبارت بالا ناراحت هستید، ابتدا راهنمای مبتدی برای عبارات منظم را بررسی کنید. عادت کردن به عبارات منظم مدتی طول می کشد. بررسی برخی مثالها مانند اعتبارسنجی جزئیات حساب کاربری با استفاده از عبارات معمولی باید کمک کند.
Regex فوق انواع URL های زیر را برآورده می کند:
- https://www.something.com/
- http://www.something.com/
- https://www.something.edu.co.in
- http://www.url-with-path.com/path
- https://www.url-with-querystring.com/?url=has-querystring
- http://url-without-www-subdomain.com/
- https://mail.google.com
استفاده از عبارت منظم در یک برنامه
کد مورد استفاده در این پروژه در a موجود است
مخزن GitHub
و استفاده از آن تحت مجوز MIT برای شما رایگان است.
این یک رویکرد پایتون برای اعتبارسنجی URL است:
import re
def validateURL(url):
regex = "^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$"
r = re.compile(regex)
if (re.search(r, url)):
print("Valid")
else:
print("Not Valid")
url1 = "https://www.linkedin.com/"
validateURL(url1)
url2 = "http://apple"
validateURL(url2)
url3 = "iywegfuykegf"
validateURL(url3)
url4 = "https://w"
validateURL(url4)
این کد از متد ()re.compile پایتون برای کامپایل الگوی عبارت منظم استفاده می کند. این متد الگوی regex را به عنوان پارامتر رشته می پذیرد و یک شی الگوی regex را برمی گرداند. این شی الگوی regex بیشتر برای جستجوی رخدادهای الگوی regex در داخل رشته هدف با استفاده از متد ()re.search استفاده میشود.
اگر حداقل یک تطابق پیدا کند، متد ()re.search اولین تطابق را برمیگرداند. توجه داشته باشید که اگر می خواهید تمام موارد مطابق با الگو را از رشته هدف جستجو کنید، باید از متد ()re.findall استفاده کنید.
اجرای کد بالا تأیید می کند که URL اول معتبر است اما بقیه آنها معتبر نیستند.
به طور مشابه، می توانید یک URL در جاوا اسکریپت را با استفاده از کد زیر تأیید کنید:
function validateURL(url) {
if(/^(http(s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/g.test(url)) {
console.log('Valid');
} else {
console.log('Not Valid');
}
}
validateURL("https://www.linkedin.com/");
validateURL("http://apple");
validateURL("iywegfuykegf");
validateURL("https://w");
مجدداً، اجرای این کد تأیید می کند که URL اول معتبر است و بقیه آنها نامعتبر است. از متد match() جاوا اسکریپت برای تطبیق رشته هدف با الگوی عبارت منظم استفاده می کند.
مثالهای واقعی و موارد استفاده از اعتبارسنجی URL با استفاده از Regex
اعتبار سنجی URL با استفاده از regex می تواند در چندین سناریو توسعه وب و پردازش داده ها بسیار مهم باشد. در اینجا چند مثال در دنیای واقعی و موارد استفاده آورده شده است:
- با استفاده از regex، می توانید اطمینان حاصل کنید که URL های ارسال شده از طریق یک فرم وب دارای فرمت صحیح هستند و از بروز خطا یا آسیب پذیری های امنیتی جلوگیری می کند. میتوانید آدرسهای اینترنتی را در فرمهای تماس، پیوندهای نمایه کاربر، یا فیلدهای ورودی که به نشانیهای وب سایت نیاز دارند، تأیید کنید.
- عبارات منظم به شما امکان می دهد URL های خاص را بر اساس الگوها یا دامنه های آنها فیلتر و استخراج کنید. این تضمین می کند که شما فقط داده های مرتبط را از منابع مورد نظر جمع آوری می کنید و از پردازش URL های نامربوط یا بالقوه مضر اجتناب می کنید.
- برای برنامه هایی که با حجم زیادی از داده های حاوی URL سر و کار دارند، مانند پلتفرم های رسانه های اجتماعی یا سیستم های مدیریت محتوا، اعتبارسنجی لینک ها ضروری است. عبارات منظم می توانند به شناسایی URL های شکسته یا نامعتبر کمک کنند. این به شما امکان میدهد تأیید پیوند را انجام دهید و اقدامات مناسب را انجام دهید، مانند حذف یا پرچمگذاری پیوندهای نامعتبر.
اعتبارسنجی داده های مهم با استفاده از عبارات منظم
می توانید از عبارات منظم برای جستجو، مطابقت یا تجزیه متن استفاده کنید. آنها همچنین برای پردازش زبان طبیعی، تطبیق الگو، و تحلیل واژگانی استفاده می شوند.
شما می توانید از این ابزار قدرتمند برای اعتبارسنجی انواع داده های مهم مانند شماره کارت اعتباری، جزئیات حساب کاربری، آدرس های IP و موارد دیگر استفاده کنید.