« Tüm yayınlar

JavaScript Regex Hatalarını Ayıklamak İçin Test Matrisi Yöntemi

JavaScript regex hatalarını dört eksenli test matrisiyle ayıklama: Unicode, bayraklar, yakalama grupları ve durum (lastIndex) yönetimi.

Bir regex'in izole halde doğru çalışması, uygulama içinde de doğru çalışacağı anlamına gelmez. Hata; bir bayraktan (flag), Unicode temsilinden, kullanılan API'den ya da paylaşılan RegExp nesnesinin durumundan (state) kaynaklanabilir. Bu makale, 'başka bir pattern dene' yaklaşımı yerine hatayı dört eksenli küçük bir test matrisine dönüştürmeyi öneriyor: girdi (input), pattern ve bayraklar, tüketici API (test, exec, matchAll, replace) ve beklenen sonuç/durum.

Örnekler; u bayrağının kod noktası (code point) tabanlı eşleşmeyi nasıl etkilediğini, normalizasyonun regex'in otomatik çözemeyeceği ayrı bir veri kararı olduğunu, opsiyonel ve tekrarlı yakalama gruplarının (capture groups) sadece tam eşleşmeyle değil ayrı ayrı test edilmesi gerektiğini gösteriyor. Ayrıca g ve y bayraklarının RegExp nesnesini durumlu (stateful) hale getirdiği, lastIndex'in çağrılar arasında değiştiği ve modül düzeyinde paylaşılan regex'lerin tutarsız sonuçlara yol açabileceği vurgulanıyor.

Mühendisler için pratik sonuç: hata raporlarını anekdot olarak değil, çalıştırılabilir assertion'lar haline getirmek. Bu yaklaşım, farklı ortamlar arasındaki tutarsızlıkları kontrollü bir deney gibi ele almayı ve regex davranışını API, bayrak ve durum bazında izole etmeyi sağlıyor.