اعتبارسنجی انواع مختلف آدرس سایت با استفاده از RegEx


فرض کنیم می‌خواهیم رِجِکسی بنویسیم که با یوآرال‌های زیر مَچ شود:

http://www.sokanacademy.com
http://sokanacademy.com
https://www.sokanacademy.com
https://sokanacademy.com

برای این منظور، ابتدا الگوی مناسب این کار را نوشته سپس به تفسیر آن خواهیم پرداخت:

var string = "https://sokanacademy.com";
var regex = /http[s]*:\/\/[www\.]*\w+\.\w{3}/;
string.match(regex);

در تفسیر پَترن (الگو) فوق باید گفت که یوآرال‌های قابل‌قبول می‌باید با http شروع شوند سپس به حرف s می‌رسیم که آن را داخل علائم [] قرار داده‌ایم و پس از آن علامت * را درج نموده‌ایم بدان معنا که کاراکتر s هم می‌تواند وجود نداشته باشد و هم وجود داشته باشد. در ادامه علامت : را نوشته‌ایم که همواره بخشی از یوآرال است و در ادامه نیاز به پوشش دادن علائم // داریم اما همان‌طور که ملاحظه می‌شود، قبل از هر کدام از آن‌ها از علامت \ استفاده نموده‌ایم تا به اصطلاح آن‌ها را اِسکیپ کنیم.

در ادامهٔ‌ طراحی رِجِکس فوق، حروف www را به انضمام .\ داخل علائم [] گذاشته و یک علامت * پس از این مجموعه علائم درج کرده‌‌ایم بدان معنا که با قرار دادن یک علامت \ قبل از . آن را به اصطلاح اِسکیپ کرده‌ایم و علامت * نیز بدان معنا است که .www می‌تواند بخشی از یوآرال باشد یا نباشد.

سپس w\ را نوشته‌ایم که حاکی از مجاز بودن درج کلیهٔ‌ اعداد و حروف است و علامت + نیز نشانگر آن است که آدرس اصلی دامنه می‌تواند حداقل یک کاراکتر و حداکثر بی‌نهایت باشد (البته لازم به یادآوری است که می‌توان در این خصوص نیز محدودیت‌هایی در نظر گرفت.) در نهایت هم .\ به نقطهٔ‌ قبل از com برمی‌گردد و در انتها نیز {3}w\ حاکی از آن است که پسوند دامنه می‌باید مجموعه‌ای از سه حرف باشد.


لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
miadabdi80
miadabdi80
۱۳۹۸/۰۴/۰۱
از نظر من این رجکس شما میتونست بهتر باشه. مثلا sای که در https هست رو میشه جلوی s علامت سؤال گذاشت.
www. رو هم میشه گروپ کرد و جلوش علامت سؤال گذاشت. قسمت اکستنشن هم باید [a-zA-Z] باشه. بک اسلش دبلیو، اعداد و آندرلاین رو هم در بر میگیره. پس در نهایت این میشه : https?:\/\/(www\.)?\w+\.[a-zA-Z]{2,3}