Hesaplama Formülü
new RegExp(pattern, flags).exec(text) — JavaScript RegExp motoru
JavaScript regex motoru ECMA-262 standardını uygular. Named capture groups (?<isim>...) ES2018'den itibaren desteklenir. Lookahead (?=), lookbehind (?<=), non-greedy *? ve atomic group desteği mevcuttur.
Örnek: /([a-zA-Z0-9._%+\-]+)@([a-zA-Z0-9.\-]+)\.([a-zA-Z]{2,})/gi → e-posta adreslerini yakalar; grup 1: kullanıcı, grup 2: domain, grup 3: TLD
Türkçe karakter eşleştirme: \w sınıfı İngilizce alfabe + rakam + _ içerir; ğ, ş, ı, ç, ö, ü eşleşmez. Türkçe metinlerde [a-zA-ZğüşöçıİĞÜŞÖÇ] gibi explicit karakter sınıfı kullanın veya Unicode property \p{L} flag 'u' ile kullanın.
Catastrophic backtracking: (a+)+ gibi iç içe niceleyiciler üstel zamanda çalışır ve tarayıcıyı donduabilir. Gerçek girdide sınırsız tekrar ve geri izleme yapan karmaşık pattern'ler production'a almadan test edilmelidir.
global (g) bayrağı: RegExp.exec() döngüde çağrıldığında lastIndex ilerler. Bu araç otomatik yönetir; ancak kendi kodunuzda flag'i yanlış sıfırlamak sonsuz döngüye neden olabilir.
Sık Sorulan Sorular
Regex ne zaman kullanılmalı?+
Pattern eşleştirme (e-posta, telefon, TC kimlik), metin dönüştürme (search/replace), girdi doğrulama ve log analizi için idealdir. Çok karmaşık veya iç içe yapılar için parser tercih edin.
g bayrağı ne işe yarar?+
Global bayrağı tüm eşleşmeleri bulur; olmadan yalnızca ilk eşleşme döner. String.replace() ile kullanılınca tüm oluşumları değiştirir. String.matchAll() da global flag gerektirir.
Lookahead ve lookbehind nedir?+
(?=X) pozitif lookahead: X öncesi pozisyonu eşleştirir ama yakalamaz. (?<=X) pozitif lookbehind: X sonrası pozisyon. (?!X) negatif lookahead: X olmayan pozisyon. Örnek: \d+(?= TL) rakamları yalnızca arkasında ' TL' varsa yakalar.
Named capture group nasıl kullanılır?+
(?<isim>pattern) sözdizimi ES2018+ gerektirir. match.groups.isim ile erişilir. Örnek: /(?<yil>\d{4})-(?<ay>\d{2})-(?<gun>\d{2})/ tarih ayrıştırır.