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.matchAll(regexp)

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:

Ö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]
Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

7410

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • 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
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML DİV ve SPAN NEDİR?
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.