عبارات منظم
در یک فروشگاه اینترنتی (online shop) میتوان از عبارات منظم برای بررسی صحت ایمیل یا شماره تلفن مشتری استفاده کرد. در یک وبسایت خبری (news website) میتوان تیترها یا تاریخها را بهصورت خودکار فیلتر و تحلیل کرد. در یک وبلاگ شخصی (personal blog) میتوان محتوای نامطلوب یا اسپم را تشخیص داد. و در یک پورتال دولتی (government portal)، عبارات منظم میتوانند به اعتبارسنجی دادههای حساس مثل کد ملی یا شناسه کاربری کمک کنند.
در این آموزش شما یاد میگیرید که چگونه الگوهای پیچیده بسازید، آنها را در متنهای واقعی پیادهسازی کنید، خطاها را مدیریت کنید و از بهترین شیوهها برای افزایش عملکرد بهره ببرید. تمرکز ما فقط بر روی عبارات منظم است و تلاش میکنیم با مثالهای عملی از دنیای واقعی، تسلط شما را به سطحی پیشرفته برسانیم.
مثال پایه
javascript// مثال پایه از عبارات منظم برای بررسی ایمیل
let email = "[[email protected]](mailto:[email protected])";
// تعریف الگو برای ایمیل
let pattern = /^\[\w\.-]+@\[a-zA-Z\d.-]+.\[a-zA-Z]{2,}\$/;
// بررسی تطابق
if (pattern.test(email)) {
console.log("ایمیل معتبر است");
} else {
console.log("ایمیل نامعتبر است");
}
در این مثال، ما ابتدا یک رشته (string) به نام email تعریف کردهایم. سپس یک عبارت منظم (Regular Expression) ساختهایم که بررسی میکند آیا این رشته یک ایمیل معتبر است یا خیر. نماد ^ در ابتدای الگو به معنای شروع رشته است و \$ در انتها به معنای پایان رشته میباشد. این باعث میشود که کل متن بررسی شود نه فقط بخشی از آن.
در قسمت [\w.-]+ ما اجازه دادهایم که کاراکترهای حروف، اعداد، نقطه و خط تیره در بخش نام کاربری ایمیل استفاده شوند. علامت + نشان میدهد که یک یا چند بار این الگو باید تکرار شود. سپس علامت @ آمده که دقیقا باید وجود داشته باشد. در بخش دوم [a-zA-Z\d.-]+ مشخص میکند که نام دامنه میتواند شامل حروف، اعداد، نقطه یا خط تیره باشد.
بخش آخر .[a-zA-Z]{2,} بیانگر این است که پس از یک نقطه باید دستکم دو حرف انگلیسی (مانند com یا org) بیاید. کاراکتر {} برای تعیین تعداد تکرار است.
تابع test() بررسی میکند که آیا الگو با رشته ورودی سازگار است یا خیر. اگر درست باشد، true برمیگرداند و ما پیام "ایمیل معتبر است" چاپ میکنیم. در غیر این صورت پیام خطا نمایش داده میشود.
این مثال کاربردی نشان میدهد که چطور عبارات منظم در دنیای واقعی، مثلا هنگام ثبتنام کاربر در یک وبسایت فروشگاهی یا پورتال دولتی، میتوانند از ورود دادههای نادرست جلوگیری کنند. مبتدیها اغلب میپرسند چرا از ^ و \$ استفاده میکنیم؛ پاسخ این است که بدون آنها ممکن است بخشی از متن معتبر تشخیص داده شود حتی اگر کل رشته نادرست باشد.
مثال کاربردی
javascript// مثال کاربردی: استخراج شماره تلفن از متن خبر
let newsText = "برای تماس با مرکز پشتیبانی با شماره 021-12345678 یا 0912-3456789 تماس بگیرید.";
// الگوی یافتن شماره تلفن
let phonePattern = /\b(0\d{2,3}-\d{7,8})\b/g;
// پیدا کردن تمام شمارهها
let phones = newsText.match(phonePattern);
console.log("شمارههای پیدا شده:", phones);
یکی از بهترین شیوهها (Best Practices) در کار با عبارات منظم استفاده از نحو مدرن و خوانا است. همیشه تلاش کنید از پرچمهای (flags) مناسب مانند g (جستجوی سراسری) یا i (بدون حساسیت به حروف) استفاده کنید تا نتایج بهتری به دست آورید. همچنین اعتبارسنجی دادهها باید همیشه همراه با مدیریت خطا (Error Handling) باشد؛ مثلا اگر هیچ نتیجهای پیدا نشد، برنامه نباید از کار بیفتد. از نظر بهینهسازی (Performance Optimization)، بهتر است از الگوهای خیلی پیچیده و سنگین اجتناب کنید زیرا میتواند باعث کاهش سرعت شود، مخصوصا در دادههای حجیم مثل متنهای خبری یا پایگاه دادههای دولتی.
اشتباهات رایج شامل استفاده نادرست از پرچمها، نوشتن الگوهای خیلی عمومی (Greedy Patterns) که نتایج ناخواسته بازمیگردانند، و عدم توجه به تمام رشته (بدون استفاده از ^ و \$) است. همچنین مبتدیها گاهی از متدهای نامناسب استفاده میکنند و به خطاهای منطقی برخورد میکنند.
برای اشکالزدایی (Debugging) توصیه میشود از ابزارهای آنلاین تست عبارات منظم استفاده کنید. همچنین در جاوااسکریپت میتوان با console.log نتایج میانی را بررسی کرد.
توصیه عملی این است که همیشه الگوهای خود را مستند کنید تا همکاران شما بتوانند به راحتی آنها را بفهمند. در پروژههای بزرگ مانند فروشگاه اینترنتی یا پورتال دولتی، این کار از بروز خطاهای بزرگ جلوگیری میکند.
📊 مرجع سریع
Property/Method | Description | Example |
---|---|---|
test() | بررسی تطابق الگو با متن | /abc/.test("abc") → true |
match() | یافتن تطابقها و بازگرداندن آرایه | "text123".match(/\d+/) |
replace() | جایگزینی الگو با متن | "hello123".replace(/\d+/, "XYZ") |
split() | تقسیم متن بر اساس الگو | "a,b,c".split(/,/) |
exec() | بازگرداندن جزئیات اولین تطابق | /(\d+)/.exec("abc123") |
در این آموزش یاد گرفتیم که عبارات منظم در جاوااسکریپت چگونه به ما کمک میکنند تا متنها را جستجو، اعتبارسنجی و تغییر دهیم. ما با یک مثال پایه بررسی ایمیل شروع کردیم و سپس به سراغ استخراج شماره تلفن از متن خبر رفتیم. این دو مثال نشان دادند که چگونه میتوان در فروشگاه اینترنتی یا وبسایت خبری، دادههای حساس و مفید را به صورت خودکار مدیریت کرد.
نکته مهم این است که عبارات منظم مانند ابزاری همهکاره هستند: میتوانند مثل نقشهبردار خانه را دقیق طراحی کنند، یا مثل کتابدار کتابخانه دادهها را سازماندهی نمایند.
این دانش ارتباط مستقیمی با کارهای دیگر مثل دستکاری DOM در HTML یا ارتباط با بکاند دارد؛ مثلا میتوانید هنگام ورود کاربر دادهها را با عبارات منظم بررسی کنید و سپس در سمت سرور دوباره تأیید کنید.
گامهای بعدی شامل یادگیری الگوهای پیشرفتهتر (مانند Lookahead و Lookbehind)، کار با عبارات منظم در زبانهای سمت سرور مثل Node.js، و استفاده از آنها در امنیت دادهها است. برای یادگیری بیشتر توصیه میشود الگوهای واقعی را از پروژههای عملی تمرین کنید.
🧠 دانش خود را بیازمایید
آزمون دانش شما
درک خود از این موضوع را با سوالات کاربردی بسنجید.
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود