گرفتن گروه های regex نامگذاری شده با Typescript

یکی از بزرگترین اکتشافات من در زمینه کدنویسی، قدرت گروه های regex نامگذاری شده در TypeScript بود. در حالی که گروه های شماره گذاری شده می توانند مفید باشند، اغلب منجر به کدهای گیج کننده و سخت می شوند. از سوی دیگر، گروه های نامگذاری شده، عبارات منظم ما را خواناتر و مقاصد ما را واضح تر می کنند.
تصور کنید در حال تجزیه یک رشته پیچیده با چند قطعه داده هستید. با استفاده از گروه های شماره گذاری شده، در نهایت با شاخص های به هم ریخته مواجه می شوید. گروههای نامگذاریشده به ما اجازه میدهند تا به هر بخش از تطابق regex خود با نامهای معنیدار اشاره کنیم، و کد ما را زیبا و قابل درک میکند.
گرفتن گروههای Regex با نام در TypeScript با Jest
بیایید چند نمونه را بررسی کنیم تا ببینیم چگونه می توانیم گروه های regex نامگذاری شده را با استفاده از TypeScript ضبط کنیم. ما از Jest برای آزمایش الگوهای regex خود استفاده خواهیم کرد.
ابتدا، بیایید یک الگوی regex ساده برای ثبت یک تاریخ در قالب “YYYY-MM-DD” تعریف کنیم:
const dateRegex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
در این الگو، year
، month
، و day
گروه ها نامگذاری شده اند. اکنون، بیایید یک تست Jest بنویسیم تا مطمئن شویم که regex ما به درستی کار می کند:
test('captures named groups for a date', () => {
const date = '2024-05-19';
const match = date.match(dateRegex);
expect(match?.groups?.year).toBe('2024');
expect(match?.groups?.month).toBe('05');
expect(match?.groups?.day).toBe('19');
});
در اینجا از ویژگی group شی match برای دسترسی به گروه های نامگذاری شده استفاده می کنیم. را ?
اپراتور اطمینان می دهد که ما مواردی را که مطابقت باطل یا تعریف نشده است، به خوبی مدیریت می کنیم.
بیایید به مثال دیگری نگاه کنیم، بخش هایی از یک آدرس ایمیل را می گیریم:
const emailRegex = /(?<localPart>[a-zA-Z0-9._%+-]+)@(?<domain>[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/;
test('captures named groups for an email', () => {
const email = 'example.user@example.com';
const match = email.match(emailRegex);
expect(match?.groups?.localPart).toBe('example.user');
expect(match?.groups?.domain).toBe('example.com');
});
در این الگو، localPart
و domain
گروه های نام برده شده هستند. تست Jest تأیید میکند که regex ما به درستی این بخشهای آدرس ایمیل را ثبت میکند.
نتیجه گیری: شادی گروه های نامگذاری شده
و بنابراین، پس از غواصی در دنیای گروههای regex نامگذاریشده در TypeScript، به یک درک لذتبخش رسیدم: گروههای نامگذاری شده مانند ارائه تبلیغاتی شایسته به مسابقات regex ما هستند. آنها دیگر در گمنامی شاخص های شماره گذاری شده زحمت نمی کشند. در عوض، آنها با افتخار نام معنی دار خود را می پوشند و وضوح و شادی را به کد ما می بخشند. بنابراین، دفعه بعد که متوجه شدید در شبکهای از الگوهای regex گرفتار شدید، به یاد داشته باشید: گروههای نامگذاری شده دوستان شما هستند، اینجاست تا زندگی کدنویسی شما را کمی روشنتر کنید.