Bu öneri, JavaScript'in düzenli ifadelerinde (regex) aynı adı taşıyan yakalama gruplarının farklı alternatifler içinde kullanılmasına izin veren bir TC39 önerisidir. Mevcut JavaScript uygulamalarında, her yakalama grubunun benzersiz bir ada sahip olması gerekiyorken, bu öneri farklı alternatifler için aynı group adını kullanmaya olanak sağlamaktadır.
/(?<year>[0-9]{4})-[0-9]{2}|[0-9]{2}-(?<year>[0-9]{4})/
Bu düzenli ifade iki farklı tarih formatını eşleştirebilir:
2024-05
(YYYY-MM formatı)05-2024
(MM-YYYY formatı)
Kod Örneği:
const regex = /(?<year>[0-9]{4})-[0-9]{2}|[0-9]{2}-(?<year>[0-9]{4})/;
const date1 = "2024-05";
const date2 = "05-2024";
console.log(date1.match(regex).groups.year); // "2024"
console.log(date2.match(regex).groups.year); // "2024"
/(?:(?<a>x)|(?<a>y))\\k<a>/
Bu düzenli ifade, x
veya y
harflerini ve ardından aynı harfi tekrar eden desenleri eşleştirir.
Kod Örneği:
const regex = /(?:(?<a>x)|(?<a>y))\k<a>/;
console.log(regex.test("xx")); // true
console.log(regex.test("yy")); // true
console.log(regex.test("xy")); // false
const phoneRegex = /(?<countryCode>\+90|0)(?<areaCode>[0-9]{3})(?<number>[0-9]{7})|(?<areaCode>[0-9]{3})(?<number>[0-9]{7})/;
const phone1 = "+905551234567";
const phone2 = "05551234567";
const phone3 = "5551234567";
function parsePhone(phoneNumber) {
const match = phoneNumber.match(phoneRegex);
if (match) {
return {
countryCode: match.groups.countryCode || '0',
areaCode: match.groups.areaCode,
number: match.groups.number
};
}
return null;
}
console.log(parsePhone(phone1));
console.log(parsePhone(phone2));
console.log(parsePhone(phone3));
Bu örnekte:
- Üç farklı telefon numarası formatını tek bir düzenli ifadeyle eşleştirebiliyoruz
countryCode
,areaCode
venumber
grupları farklı formatlarda kullanılabiliyor- Eksik olan
countryCode
için varsayılan değer atanabiliyor
- Daha Esnek Regex Desenleri: Farklı formatlardaki verileri tek bir düzenli ifadeyle eşleştirebilme
- Kod Tekrarını Azaltma: Benzer desenler için ayrı regex yazmaya gerek kalmaz
- Okunabilirlik: Karmaşık eşleştirme senaryolarında daha net ve anlaşılır regex tanımları
- Performans: Tek bir regex ile birden fazla formatı yakalayabilme