Regex یا Regular Expression (عبارت منظم) یک زبان یا الگو برای جستجو، اعتبارسنجی و پردازش متن‌هاست.
با regex می‌توانی بگویی: «این رشته باید دقیقاً این شکل را داشته باشد» یا «همه قسمت‌هایی از متن را پیدا کن که با این الگو می‌خوانند».

1. ساختار کلی

یک regex ترکیبی از:

  • کاراکترهای معمولی (مثل a, b, 1)
  • متاکاراکترها (مثل ., *, +, ?, [], {} و …)
  • گروه‌ها و پرانتزها برای ترکیب شرط‌ها

مثلاً:

^\d{4}-\d{2}-\d{2}$

یعنی: رشته باید با ۴ رقم شروع شود، بعد یک خط تیره، بعد ۲ رقم، بعد یک خط تیره و در پایان ۲ رقم —‌ مناسب برای اعتبارسنجی تاریخ در فرمت YYYY-MM-DD.

2. کاربردهای مهم Regex در پروژه‌های وب

1. اعتبارسنجی ورودی‌ها (Form Validation)

در فرانت‌اند و بک‌اند، regex پرکاربردترین روش برای بررسی صحت داده‌هاست:

  • ایمیل: /^[^\s@]+@[^\s@]+\.[^\s@]+$/
  • شماره تلفن: /^09\d{9}$/
  • رمز عبور پیچیده (حداقل 8 کاراکتر شامل حروف بزرگ، کوچک، عدد و علامت): /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/

2. جستجو و جایگزینی (Search & Replace)

در وب‌اپلیکیشن‌ها و اسکریپت‌ها، regex برای پیدا کردن و تغییر بخش‌هایی از متن استفاده می‌شود.
مثلاً: حذف همه تگ‌های HTML از یک متن:

const clean = htmlString.replace(/<[^>]*>/g, '');

3. پردازش لاگ‌ها و داده‌ها

در بک‌اند (Node.js، Python، PHP و …) برای استخراج داده خاص از متن یا فایل لاگ:

const log = 'User 192.168.0.1 accessed at 10:22';
const ip = log.match(/\b\d{1,3}(\.\d{1,3}){3}\b/)[0]; // 192.168.0.1

4. تحلیل URL و مسیرها

در Routing یا URL Rewriting، regex کمک می‌کند مسیرها را با الگو تطبیق دهیم.
مثلاً در Angular یا Express.js:

app.get(/^\/user\/(\d+)$/, (req, res) => {
  res.send(`User ID: ${req.params[0]}`);
});

5. اسکرپینگ و استخراج داده (Web Scraping)

وقتی HTML یا JSON داری ولی می‌خواهی بخش خاصی را سریع پیدا کنی (البته regex برای HTML کامل همیشه توصیه نمی‌شود):

import re
html = "<span class='price'>$123.45</span>"
price = re.search(r'\$(\d+\.\d{2})', html).group(1) # 123.45

3. نکات مهم برای استفاده در پروژه وب

  • ساده و خوانا بنویس چون regex پیچیده می‌تواند سخت‌فهم شود.
  • اگر ورودی کاربر را با regex بررسی می‌کنی، از anchor‌ها (^ و $) استفاده کن تا فقط کل رشته را اعتبارسنجی کند.
  • مراقب ReDoS (Regular Expression Denial of Service) باش؛ regex‌ بد نوشته شده می‌تواند باعث مصرف زیاد CPU شود.
  • در فریم‌ورک‌های وب، regex معمولاً در:
    • Routing
    • Middleware Validation
    • Form Validators
    • String Processing Utilities
      استفاده می‌شود.