Javascript ile Regex Nasıl Kullanılır ?
Regex, bir arama modeli oluşturan karakter dizisidir. Bir metinde veri aradığınızda, aradığınızı tanımlamak için bu arama modelini kullanabilirsiniz.
Normal bir ifade, tek bir karakter veya daha karmaşık bir kalıp olabilir.
Her türden metin arama ve metin değiştirme işlemlerini gerçekleştirmek için Regular Expressions (normal ifadeler) kullanılabilir.
PHP ile regex kullanımı
Syntax – Sözdizimi
Javascript’ de normal ifadeler, eğik çizgiler arasına alınmış bir kalıptan oluşan bir düzenli ifade değişmezi aşağıdaki gibi kullanılır:
const re = /ab+c/;
Regex değişmezleri, komut dosyası yüklendiğinde normal ifadenin derlenmesini sağlar. Regex sabit kalırsa, bunu kullanmak performansı artırabilir.
Diğer bir kullanımı RegExp sınıfını initiliaze ederek;
const re = new RegExp('ab+c');
Regex Kalıpları
Regex kalıbı, /abc/ gibi basit karakterlerden veya /ab*c/ veya /Bölüm (\d+)\.\d*/ gibi basit ve özel karakterlerin birleşiminden oluşur.
Pattern – Desen
Basit desenler, doğrudan eşleşme bulmak istediğiniz karakterlerden oluşur. Örneğin, /abc/ kalıbı, yalnızca tam “abc” dizisi (tüm karakterler birlikte ve bu sırayla) oluştuğunda dizelerdeki karakter kombinasyonlarıyla eşleşir. Böyle bir eşleşme “Merhaba, abc nedir biliyor musunuz?” dizelerinde başarılı olur. ve “En yeni uçak tasarımları slabcraft’tan evrimleşti.”. Her iki durumda da eşleşme “abc” alt dizisiyle yapılır. “arab cenk etmez” dizesinde eşleşme yok çünkü “ab c” alt dizesini içerirken, “abc” alt dizesini tam olarak içermez.
Kaçış Karakteri
Özel ifade aramamız gerektiğinde örneğin *,/. gibi karakterler regexp söz dizimini kapsadığından ifadede kullanılamayacaktır. Ancak aramak istediğimiz karakterin başına backslash – eğik çizgi kaçış karakteri eklediğimizde çalışacaktır. “*” ifadede yıldızı aramak isteseydik “\*” şu şekilde başına eğik çizgi eklemek yeterli olacaktı.
Javascriptte Regex Metodları
exec() | İfadede bir eşleşme araması yürütür. Uyumsuzluk durumunda array veya boş değer döndürür. |
test() | İfadedin desen kalıbına uyulma kontrolü yapılır. Method geriye true, false değeri döndürür. |
match() | Yakalama grupları da dahil olmak üzere tüm eşleşmeleri içeren Array veya eşleşme bulunamazsa null döndürür. |
matchAll() | Yakalama grupları dahil tüm eşleşmeleri içeren bir yineleyici döndürür. |
search() | Bir dizedeki eşleşmeyi test eder. Arama başarısız olursa eşleşmenin dizinini veya -1’i döndürür. |
replace() | Bir dizede bir eşleşme araması yürütür ve eşleşen alt dizeyi bir yedek alt dizeyle değiştirir. |
replaceAll() | Bir dizedeki tüm eşleşmeler için bir arama yürütür ve eşleşen alt dizeleri bir yedek alt dizeyle değiştirir. |
split() | Bir dizeyi bir dizi alt dizeye bölmek için normal bir ifade veya sabit bir dize kullanır. |
Bir dizgede bir kalıp bulunup bulunmadığını öğrenmek istediğinizde, test() veya search() yöntemlerini kullanın; daha fazla bilgi (ancak daha yavaş çalışma) için exec() veya match() yöntemlerini kullanın. exec() veya match() kullanırsanız ve eşleşme başarılı olursa, bu yöntemler bir dizi döndürür ve ilişkili düzenli ifade nesnesinin ve ayrıca önceden tanımlanmış düzenli ifade nesnesi RegExp’in özelliklerini günceller. Eşleştirme başarısız olursa, exec() yöntemi null değerini döndürür (yanlış olmaya zorlar).
Regex Bayrakları
Bayrak | Açıklama |
d | Alt dizi eşleşmeleri için dizinler oluşturun. |
g | Global arama |
i | Büyük/küçük harfe duyarsız arama. |
m | Multi-line / çok satırlı arama |
s | yeni satır karakterlerini eşleştirmek için . izin verir. |
u | “unicode”; bir kalıbı bir unicode kod noktaları dizisi olarak ele alın. |
y | Hedef dizedeki geçerli konumdan başlayarak eşleşen bir “yapışkan/sticky” arama yapın. |
Sticky : Sticky özellik, aramanın Sticky olup olmadığını yansıtır (yalnızca bu normal ifadenin lastIndex özelliği tarafından belirtilen dizinden dizelerde arama yapar). Sticky, tek bir normal ifade nesnesinin salt okunur bir özelliğidir.
const str1 = 'table football';
const regex1 = new RegExp('foo', 'y');
regex1.lastIndex = 6;
console.log(regex1.sticky);
// Çıktı : true
console.log(regex1.test(str1));
// Çıktı : true
console.log(regex1.test(str1));
// Çıktı : false
EXEC() Metodu
Exec() yöntemi, belirtilen bir dizede bir eşleşme araması yürütür. Bir sonuç dizisi veya null döndürür.
const regex1 = RegExp('foo*', 'g');
const str1 = 'table football, foosball';
let array1;
while ((array1 = regex1.exec(str1)) !== null) {
console.log(`${array1[0]} bulundu. Sonraki ${regex1.lastIndex} başlar.`);
// Çıktı: "foo bulundu. Sonraki 9 başlar."
// Çıktı: "foo bulundu. Sonraki 19 başlar."
}
TEST() Metodu
İfadedin desen kalıbına uyulma kontrolü yapılır. Method geriye true, false değeri döndürür.,
const str = 'table football';
const regex = new RegExp('foo*');
const globalRegex = new RegExp('foo*', 'g');
console.log(regex.test(str));
// Çıktı: true
console.log(globalRegex.lastIndex);
// Çıktı: 0
console.log(globalRegex.test(str));
// Çıktı: true
console.log(globalRegex.lastIndex);
// Çıktı: 9
console.log(globalRegex.test(str));
// Çıktı: false
Match() Metodu
Yakalama grupları da dahil olmak üzere tüm eşleşmeleri içeren Array veya eşleşme bulunamazsa null döndürür.
const paragraph = 'Hızlı kahverengi tilki tembel köpeğin üzerinden atlar. Köpek havladı.';
const regex = /[A-Z]/g;
const found = paragraph.match(regex);
console.log(found);
// expected output: Array ["H", "K"]
SPLİT() METODU
const str = 'Hızlı kahverengi tilki tembel köpeğin üzerinden atlar.';
const words = str.split(' ');
console.log(words[3]);
// Çıktı: "tembel"
const chars = str.split('');
console.log(chars[8]);
// Çıktı: "h"
const strCopy = str.split();
console.log(strCopy);
// Çıktı: Array ["Hızlı kahverengi tilki tembel köpeğin üzerinden atlar."]