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
استفاده میشود.