Düzenli ifadeler, karakter dizilerini karşılaştırmak, ayırmak/bölmek, sıralamak ve biçimlendirmek gibi işlemler için kullanılan kurallı stenografik sistemlerdir. Bir RegExp (Regular Expression) nesnesi, bu gibi işlemler için kurallı bir ifadenin/deyimin kalıbını içererek karakter dizisi (string) içinde uygulanabilmesini sağlayan özelliklere ve metotlara sahiptir.
Düzenli ifade kalıplarında <HTML>
etiketi veya [email protected]
e-posta adresi ve benzeri birçok deyim için düzenli ifade kuralları tanımlayabilirsiniz. Örneğin [email protected]
gibi bir e-posta adresinde temel olarak bir @
(at/echo) işareti ve bir .
(nokta) olmak zorundadır. Bu kuralı aşağıdaki gibi gösterebiliriz.
kelime1 @ kelime2 . kelime3
E-posta adresinin gösterimini basitçe tanımlayan bu kuralın düzenli ifadelerde stenografik gösterimi aşağıdaki gibi olacaktır.
- Bir kelime = \w+
- Sonra @ işareti = @
- Sonra bir kelime = \w+
- Sonra nokta = \.
- En son bir kelime = \w+
Sonuç : /\[email protected]\w+\.\w+/
Ve daha bir çok kural tanımlayabilirsiniz.
RegExp nesnesinin oluşturulması
Düzenli ifadeleri RegExp nesnesinin kurucu fonksiyonuyla veya stenografik gösterim ile aşağıdaki gibi tanımlayabilirsiniz.
Stenografik gösterimi:
/kalip/ayarlar
Kurucu fonksiyon ile:
new RegExp("kalip" [,"ayarlar"] )
- kalip : Düzenli ifade metni. (Steno gösterim)
- ayarlar : Eğer belirtildiyse aşağıdakilerden biri veya birkaçı
- g : Global kontrol.
- i : Büyük-küçük harf uyumunu atlar.
- m : Metnin birden çok satıra sahip olduğunu ifade eder.
Stenografik gösterimde, karakter dizilerini belirtmek için tırnak işaretlerinin kullanılmadığına dikkat edin, tırnak işaretleri sadece kurucu fonksiyonda kullanılır. Aşağıdaki ifadelerin ikiside aynı düzenli ifade kurallarını tanımlar.
1. /ab+c/i
2. new RegExp("ab+c", "i")
RegExp kurucu fonksiyon kullanılacağı zaman standart escape karakter kurallarına uyulması zorunludur. Örneğin, aşağıdaki gösterimlerin ikiside aynı kuralları tanımlar.
1. re = new RegExp("\\w+")
2. re = /\w+/
Escape Karakterler
Escape Karakterler sadece düzenli ifadelerde değil bir çok programlama lisanında da özel anlama sahip olan ve genelde görüntülenemeyen karakterleri temsil etmek için kullanılırlar.
Özellikle unutulmaması gereken bir kural '\' ters bölü (backslash) karakterinin Escape karakterlerde özel bir anlamı olduğudur. '\' özel karakteri bir çok karakterin özel olup-olmadığını belirler. Örneğin '\\' ifadesi özel anlamı olmayan '\' ters bölü anlamına gelir veya düzenli ifadelerde özel bir anlama sahip '/' bölü özel karakterini '\/' şeklinde gösterebilirsiniz.
RegExp nesnesi le kullanabileceğiniz escape karakterleri aşağıdaki tabloda gösterilmiştir.
Karakter | Anlamı |
\f | FormFeed (FF) |
\n | Yeni Satır (LF - LineFeed) |
\r | Satırbaşı (CR - Carriage return) |
\t | Tab (HT) |
\v | Dikey Tab (VT) |
|
Karakter | Anlamı |
\xhh | Onaltılık iki basamaklı 'hh' ile belirtilen karaktere denktir. |
\uhhhh | Onaltılık dört basamaklı 'hhhh' ile belirtilen unicode karaktere denktir. |
\cX | 'X' yerine A-Z arası bir değer alarak "Control" karakteri tanımlar. |
|
Karakter Türleri
Özel karakterler, düzenli ifadeleri oluştururken ifadeleri kısaltarak stenografik gösterim için kullanılırlar. Örneğin "\w" özel karakteri altçizgi dahil herhangi bir alfanümerik karaktere denktir. (_a-zA-Z0-9)
Karakter | Anlamı |
\d | 0-9 rakamlardan biri |
\D | Rakam olmayan bir karakter |
\s | Herhangi bir boşluk karakteri |
\S | Boşluk olmayan bir karakter |
\w | Alt çizgi, rakamlar ve harflerden biri |
\W | Alt çizgi, rakam ve harf olmayan bir karakter |
|
Karakter | Anlamı |
. nokta | \n (yeni satır) hariç herhangi bir karakter |
[abcd] | abcd karakterlerinden biri |
[^abcd] | abcd'den biri olmayan bir karakter |
[a-e] | a-e arası bir karakter |
x|y | x veya y'den biri |
() | $1, $2 gibi değerlerle daha sonra kullanmak için içindekileri saklar. |
|
Sınır Eşleşmeleri
Sınır eşleşmeleri özel karakterleri, düzenli ifadelerde bir karakter dizisi içinde bir kelime veya bir bölümün başlangıcı veya sonu gibi değerlerinin tanımlanmasını sağlar.
Karakter | Anlamı |
^ | Karakter dizisi başlangıcı |
$ | Karakter dizisi sonu |
\b | Kelime sınırı |
\B | Kelime sınırı olmayan bir konum |
Yineleme miktarları
Yineleme miktarı özel karakterleri, düzenli ifadelerde kendinden önce gelen özel karakterin veya ifadenin kaç defa tekrarlanacağını/tekrarlanma ihtimalini tanımlarlar.
Karakter | Anlamı |
* | '0' sıfır veya daha fazla |
+ | 1 veya daha fazla |
? | '0' sıfır veya 1 kere |
{x} | Tam 'x' kere |
{x,} | En az 'x' kere |
{x,y} | En az 'x' en fazla 'y' kere |
Fonksiyonlar ve Parametreler
Parametreler
RegExp nesnesinin özelliklerinin birkaçı kısa ve uzun isimlere sahiptir. Her iki isimde daima aynı değeri gösterir.
Özellik | Açıklama |
global | Karakter dizisinin tamamının kontrol edilip-edilmeyeceği. |
ignoreCase | Harf hassasiyetinin olup olmadığı |
multiline | Karakter dizisinin çok satırlı olup-olmadığı. |
Fonksiyonlar
Metod | Açıklama |
exec | Aldığı karakter dizisi parametresi içinde eşleşmeyi uygular. |
test | Aldığı karakter dizisi parametresini eşleşme için test eder. |
Düzenli İfadeler ve RegExp Örnekleri