javascript Düzenli ifadeler -5 matchAll() Methodu
Genellikle "regex" veya "RegExp" olarak bilinen Düzenli İfadeler, metindeki kalıpları bulmak için kullanılan özel olarak biçimlendirilmiş metin dizeleridir. Düzenli ifadeler, etkili ve verimli metin işleme ve manipülasyonlar için günümüzde mevcut olan en güçlü araçlardan biridir. Örneğin, kullanıcı tarafından girilen isim, e-posta, telefon numarası vb. Gibi veri formatının doğru olup olmadığını doğrulamak, metin içeriği içinde eşleşen dizeyi bulmak veya değiştirmek için kullanılabilir.
matchAll()
Yeni bir methoddur. Bu method ECMAScript'e 2020(ES 11) Düzenli ifadeler ile çalışır. Javascript'te matchAll()
methodu, başvuru dizesini bir regex (düzenli ifade) ile eşleştiren tüm yinelemecileri döndürmek için kullanılır. matchAll()
methodun önemli bir kullanımı, "/g" bayrağıyla yakalama gruplarını yoksayan match()
methodu göre avantaj sağlayan "/g" bayrağına sahip grupları yakalamak için kullanılabilmesidir.
Sözdizimi:
str: Eşleşmelerin bulunacağı referans dizesidir.
Regexp: Sadece bir düzenli ifade nesnesidir. RegExp nesnesi "/g" bayrağını içermelidir, aksi takdirde bir TypeError
atılır.
Return value: Bir yineleyicidir.
Düzenli ifade oluşturma
İki yoldan biriyle Düzenli bir ifade oluşturursunuz:
Eğik çizgiler arasına alınmış bir desenden oluşan bir düzenli ifade değişmezi aşağıdaki gibi kullanılır:
let re = /ab+c/i; //Gerçek gösterim
Düzenli ifade değişmezleri, komut dosyası yüklendiğinde düzenli ifadenin derlenmesini sağlar. Düzenli ifade sabit kalırsa, bunu kullanmak performansı artırabilir.
Veya RegExp
nesnenin yapıcı işlevini aşağıdaki gibi çağırmak :
let re = new RegExp('ab+c', 'i')
//İlk argüman olarak dize desenli yapıcı
let re = new RegExp(/ab+c/, 'i')
//Ilk argüman olarak düzenli ifade değişmezine
//sahip yapıcı (ECMAScript 6 ile başlayarak)
Yapıcı methodu kullanmak, düzenli ifadenin çalışma zamanı derlemesini sağlar. Düzenli ifade kalıbının değişeceğini bildiğinizde veya kalıbı bilmiyorsanız ve onu kullanıcı girişi gibi başka bir kaynaktan alıyorsanız yapıcı methodunu kullanın.
Döndürülen değerin her bir öğesi aşağıdaki özelliklere sahip olacaktır:
- gruplar: Düzenli ifadede belirtilen adlandırılmış yakalama gruplarının sonucundan oluşur.
- İndex: Sonucun bulunduğu arama dizini.
- İnput: Arama dizesinin bir kopyası.
ÖRNEK:
const regexp = /t(e)(st(\d?))/g;
const str = 'test1test2';
const array = [...str.matchAll(regexp)];
console.log(array[0]);
// çıktı: Array ["test1", "e", "st1", "1"]
console.log(array[1]);
// çıktı: Array ["test2", "e", "st2", "2"]
ÇIKTI:
["test1", "e", "st1", "1", index: 0, input: "test1test2", groups: undefined] ["test2", "e", "st2", "2", index: 5, input: "test1test2", groups: undefined]
ÖRNEK 2:
let str = '<h1>Hello, world!</h1>';
let regexp = /<(.*?)>/g;
let matchAll = str.matchAll(regexp);
alert(matchAll); // [object RegExp String Iterator], not array, but an iterable
matchAll = Array.from(matchAll); // array now
let firstMatch = matchAll[0];
alert( firstMatch[0] ); // <h1>
alert( firstMatch[1] ); // h1
alert( firstMatch.index ); // 0
alert( firstMatch.input ); // <h1>Hello, world!</h1>
Yineleyici, her eşleşme için bir dizi üretir, bu nedenle for…of
döngüleriyle de harika çalışır.
ÖRNEK:
const string = "JavaScript web dili öğreneceğim. Java proğramı değil.";
const desen = /Java[a-z]*/gi;
let result = string.matchAll(desen);
for (match of result) {
console.log(match);
}
ÇIKTI:
["JavaScript", index: 0, input:"JavaScript web dili öğreneceğim. Java proğramı değil.", groups: undefined] ["Java", index: 33, input:"JavaScript web dili öğreneceğim. Java proğramı değil.", groups: undefined]
matchAll()
için Düzenli bir ifadenin "g" bayrağına sahip olması gerekir, aksi takdirde bir hata atılır.
const str = "ReguralExpresion, RegExr, regexp";
const desen = /E(x)([a-z])/;
const match = str.matchAll(desen);
//Error: String.prototype.matchAll called with a non-global RegExp argument
Eşleşme yoksa, matchAll()
methodu null
değerini döndürür.
let str = "ReguralExpresion, RegExr, regexp";
let desen = /E(m)([a-z])/g;
let match = str.matchAll(desen); //Object { }
Yineleyici, her eşleşme için bir dizi üretir, bu nedenle for…of
döngüleriyle de harika çalışır.
ÇIKTI:
["Exp", "x", "p", index: 7, input: "ReguralExpresion RegExr", groups: undefined] ["Exr", "x", "r", index: 20, input: "ReguralExpresion RegExr", groups: undefined]
- HTML
- CSS
- PHP
- JQUERY
- PHOTOSHOP
- JavaScript
- Web Dünyası
- Linux
- MİTHRİL FRAMEWORK
- Laravel
- Git
- React
- HTML LİNK(Bağlantı)EKLEME - LİNK VERME
- HTML YAZI VE RESİM ORTALAMA
- HTML RESME LİNK VERME
- HTML FORM OLUŞTURMA
- CSS YATAY MENÜ YAPIMI
- CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
- HTML RESİM EKLEME
- HTML DİV ve SPAN NEDİR?
- HTML ARKAPLANA MÜZİK EKLEME
- KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME