Aşağıdaki tabloda, normal ifadeler için ayarlayabildiğiniz beş bayrak listelenmektedir. Normal ifade nesnesinin bir özelliği olarak her bayrağa erişilebilir.
Bayrak
|
Özellik
|
Açıklama
|
g
|
global
|
Birden çok eşleşme yapar.
|
i
|
ignoreCase
|
Büyük/küçük harf duyarlı eşleşme. A—Z ve a—z karakterleri için geçerlidir ancak É ve é gibi genişletilmiş karakterler için geçerli değildir.
|
m
|
multiline
|
Bu bayrak ayarlıyken, $ ve ^ öğeleri sırayla bir satırın başıyla ve bir satırın sonuyla eşleşebilir.
|
s
|
dotall
|
Bu bayrak ayarlıyken, . (nokta), yeni satır karakteriyle (\n) eşleşebilir.
|
x
|
extended
|
Genişletilmiş normal ifadelere izin verir. Desenin parçası olarak yoksayılan boşlukları normal ifadeye yazabilirsiniz. Bu, normal ifade kodunuzu daha okunaklı yazmanıza olanak sağlar.
|
Bu özelliklerin salt okunur olduğunu unutmayın. Aşağıdaki gibi, normal ifade değişkeni ayarladığınızda, bayrakları (g, i, m, s, x) ayarlayabilirsiniz:
var re:RegExp = /abc/gimsx;
Ancak, adlandırılmış özellikleri doğrudan ayarlayamazsınız. Örneğin, aşağıdaki kod bir hataya yol açar:
var re:RegExp = /abc/;
re.global = true; // This generates an error.
Varsayılan olarak, bayrakları normal ifade bildiriminde belirtmemeniz durumunda, bayraklar ayarlanmaz ve karşılık gelen özellikler de false değerine ayarlanır.
Ayrıca, normal ifadenin iki başka özelliği daha vardır:
lastIndex özelliği, normal ifadenin exec() veya test() yöntemine yapılan sonraki çağrı için dizede kullanılacak dizin konumunu belirtir.
source özelliği, normal ifadenin desen bölümünü tanımlayan dizeyi belirtir.
g (global) bayrağı
g (global) bayrağı dahil edilmediğinde, normal ifade birden çok eşleşme yapmaz. Örneğin, normal ifadeye g bayrağı dahil edilmediğinde, String.match() yöntemi yalnızca bir eşleşen alt dize döndürür:
var str:String = "she sells seashells by the seashore.";
var pattern:RegExp = /sh\w*/;
trace(str.match(pattern)) // output: she
g bayrağı ayarlandığında, Sting.match() yöntemi aşağıdaki gibi birden çok eşleşme döndürür:
var str:String = "she sells seashells by the seashore.";
var pattern:RegExp = /sh\w*/g;
// The same pattern, but this time the g flag IS set.
trace(str.match(pattern)); // output: she,shells,shore
i (ignoreCase) bayrağı
Varsayılan olarak, normal ifade eşleşmeleri büyük/küçük harf duyarlıdır. i (ignoreCase) bayrağını ayarladığınızda, büyük/küçük harf duyarlılığı yoksayılır. Örneğin, normal ifadedeki küçük harfli s öğesi, dizenin birinci karakteri olan büyük harfli S öğesiyle eşleşmez:
var str:String = "She sells seashells by the seashore.";
trace(str.search(/sh/)); // output: 13 -- Not the first character
Ancak i bayrağı ayarlıyken, normal ifade, baş harf olan S öğesiyle eşleşir:
var str:String = "She sells seashells by the seashore.";
trace(str.search(/sh/i)); // output: 0
i bayrağı yalnızca A–Z ve a–z karakterleri için büyük/küçük harf duyarlılığını yok sayar ancak É ve é gibi genişletilmiş karakterler için büyük/küçük duyarlılığını uygulamaya devam eder.
m (multiline) bayrağı
m (multiline) bayrağı ayarlanmazsa, ^ öğesi dizenin başıyla ve $ öğesi de dizenin sonuyla eşleşir. m bayrağı ayarlanırsa, bu karakterler sırayla satırın başıyla ve satırın sonuyla eşleşir. Bir yeni satır karakteri içeren şu dizeyi göz önünde bulundurun:
var str:String = "Test\n";
str += "Multiline";
trace(str.match(/^\w*/g)); // Match a word at the beginning of the string.
Normal ifadede g (global) bayrağı ayarlansa da, ^ için yalnızca bir eşleşme (dizenin başı) bulunduğundan, match() yöntemi yalnızca bir alt dizeyle eşleşir. Çıktı şudur:
Test
Burada, aynı kod m bayrağı ayarlanmış şekilde verilmiştir:
var str:String = "Test\n";
str += "Multiline";
trace(str.match(/^\w*/gm)); // Match a word at the beginning of lines.
Bu defa, çıktı her iki satırın başındaki sözcükleri içerir:
Test,Multiline
Yalnızca \n karakterinin satır sonunu işaret ettiğini unutmayın. Aşağıdaki karakterler satır sonunu işaret etmez:
s (dotall) bayrağı
s (dotall veya “dot all”) bayrağı ayarlanmazsa, normal ifadedeki bir nokta (.) yeni satır karakteriyle (\n) eşleşmez. Bu nedenle de aşağıdaki örnekte bir eşleşme yoktur:
var str:String = "<p>Test\n";
str += "Multiline</p>";
var re:RegExp = /<p>.*?<\/p>/;
trace(str.match(re));
Ancak, s bayrağı ayarlanırsa, nokta yeni satır karakteriyle eşleşir:
var str:String = "<p>Test\n";
str += "Multiline</p>";
var re:RegExp = /<p>.*?<\/p>/s;
trace(str.match(re));
Bu durumda eşleşme, yeni satır karakteri de dahil olacak şekilde <p> etiketleri içindeki alt dizenin tamamı olur:
<p>Test
Multiline</p>
x (extended) bayrağı
Özellikle de çok fazla meta sembol ve meta sıralar içeriyorsa, normal ifadelerin okunması zor olabilir. Örneğin:
/<p(>|(\s*[^>]*>)).*?<\/p>/gi
Normal ifadede x (extended) bayrağını kullandığınızda, desene yazdığınız tüm boşluklar yoksayılır. Örneğin, aşağıdaki normal ifade bir önceki örnekle aynıdır:
/ <p (> | (\s* [^>]* >)) .*? <\/p> /gix
x bayrağı ayarlanmışsa ve boşluk karakteriyle eşleşme olmasını istiyorsanız, boşluğun önüne ters eğik çizgi getirin. Örneğin, şu iki normal ifade birbirine eşdeğerdir:
/foo bar/
/foo \ bar/x
lastIndex özelliği
lastIndex özelliği, dizede, bir sonraki aramanın başlayacağı dizin konumunu belirtir. Bu özellik, g bayrağı true değerine ayarlanmış bir normal ifadede çağrılan exec() ve test() yöntemlerini etkiler. Örneğin, şu kodu göz önünde bulundurun:
var pattern:RegExp = /p\w*/gi;
var str:String = "Pedro Piper picked a peck of pickled peppers.";
trace(pattern.lastIndex);
var result:Object = pattern.exec(str);
while (result != null)
{
trace(pattern.lastIndex);
result = pattern.exec(str);
}
lastIndex özelliği varsayılan olarak 0 değerine ayarlanır (aramayı dizenin başından başlatmak için). Her eşleşmeden sonra, bu özellik eşleşmeden sonraki dizin konumuna ayarlanır. Bu nedenle de önceki kodun çıktısı şöyledir:
0
5
11
18
25
36
44
global bayrağı false değerine ayarlanırsa, exec() ve test() yöntemleri lastIndex özelliğini kullanmaz veya ayarlamaz.
String sınıfının match(), replace() ve search() yöntemlerinin tümü, yöntem çağrısında kullanılan normal ifadenin lastIndex özelliğinin ayarına bakılmaksızın, tüm aramaları dizenin başından başlatır. (Ancak, match() yöntemi lastIndex öğesini 0 değerine ayarlar.)
lastIndex özelliğini normal ifade eşlemesi için dizedeki başlangıç konumunu belirlemek üzere ayarlayabilirsiniz.
source özelliği
source özelliği, normal ifadenin desen bölümünü tanımlayan dizeyi belirtir. Örneğin:
var pattern:RegExp = /foo/gi;
trace(pattern.source); // foo