Javascript Eğitim Dersleri #015

21 Nisan 2008, Pazartesi

Regular Expression

Javascript’in core objelerindendir. Pek çok yazılım dilinde Regular Expression bulunur. Çoğu zaman, bizde, bilerek yada bilmeyerek Regular Expression kullanırız. Örneğin delete *.* dediğimizde, bulunduğumuz folder’ın altındaki tüm dosyalar silinir. İlk * Wildcard yani hangi karakter olursa olsun anlamındadır. Sistem içinde . ( NOKTA ) geçen de dahil, DOSYA_ADI.EXTENSION’a bakar. Böyle adı grafik_01.jpg olan da logolar.001.gif olan da silinir.

RegExp objesini 2 farklı çağırma şekli vardır.

objReg = /Pattern/[ flags ];

Pattern
Slash ( / ) ler arasında alan kısımdır. Syntax’a uygun şekilde yazılır.
flags
Opsiyonel. Alabileceği değerler g , i , m

yada;

objReg = new RegExp( "Pattern" , "flags" );

Pattern
Slash kullanılmadan yazılır. Eğer patern içinde \w gibi bir direktif varsa bu \\w şeklinde yazılır.
flags
Opsiyonel. Alabileceği değerler g , i , m
  1. var myRegPattern = "(vigo)";
  2. var myReg = new RegExp( myRegPattern , "gim" );
  3.  
  4. // yada
  5.  
  6. var myReg = /(vigo)/gim;

Flag’ler nelerdir?

g
Global ( Genel )
i
Ingnore Case ( Büyük/Küçük harfe Duyarsız )
m
Multi-Line ( Eğer \n yada \r\n -line break- varsa bunlarıda hesaba kat tüm satırları işle. )

Global ( g )

Eğer benim adım vigo. senin adın da vigo mu? cümlesinde geçen vigo kelimesini arıyorsak ve g flag kapalıysa, sadece ilk yakalan vigo yani benim adım vigo bize sonuç olarak döner.

Ignore Case ( i )

benim adım Vigo. senin adın da vigo mu? cümlesinde geçen vigo’yu ararken, eğer i flag kapalıysa, sonuç sadece küçük harfle yazılan vigo yani senin adın da vigo mu? döner. Tam tersi de olabilir. Eğer biz Vigo arıyorsak bize benim adım Vigo.’daki Vigo döner.

Multi-Line ( m )

Elimizde şu metin olsun :

kullanıcı adı: vigo şifre: 1234
kullanıcı adı: lego şifre: xxx123

Amacımız kullanıcı adı’nı yakalamak. Biliyoruz ki kullanıcı kelimesi hep satırın ilk kelimesi. bunun için paterni yazarken ^kulllanıcı şeklinde yazıyoruz. Eğer m flag kapalıysa, ikinci satırda bulunan kullanıcı’yı yakalayamayız.

Syntax

\
Escape etmek için. / aramak için \/ yazmak gerekir.
^
Satır başı için. ( m flag’le ilişkilidir. )
$
Satır sonu için. ( m flag’le ilişkilidir. )
*
0 yada N defa demektir. v* : v , vigo yu yakalar.
+
1 yada N defa demektir. v+ : sadece vigo yu yakalar. v’yi YAKALAMAZ!
?
Parantez kullanımında 0 yada N defa demektir. silah(tar)? : hem silah eğer varsa silahtar
{N}
N tane demektir. o{2} food ve door yakalarken pod YAKALAMAZ!

Daha detaylı örnek ve test için tıklayın.