Nicelik belirteçleri

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

Aşağıdaki gibi, desenlerde karakterlerin veya sıraların yinelemesini belirtmek için nicelik belirteçlerini kullanırsınız:

Nicelik belirteci meta karakteri

Açıklama

* (yıldız)

Sıfır veya birkaç kere yinelenen önceki öğeyle eşleşir.

+ (artı)

Bir veya birkaç kere yinelenen önceki öğeyle eşleşir.

? (soru işareti)

Sıfır veya bir kere yinelenen önceki öğeyle eşleşir.

{n}

{n,}

ve

{n,n}

Önceki öğe için sayısal nicelik belirtecini veya nicelik belirteci aralığını belirtir:

/A{27}/, 27 kere yinelenen A karakteriyle eşleşir.

/A{3,}/, en az 3 kere yinelenen A karakteriyle eşleşir.

/A{3,5}/, 3 ile 5 defa yinelenen A karakteriyle eşleşir.

Tek bir karaktere, karakter sınıfına veya bir gruba nicelik belirteci uygulayabilirsiniz:

  • /a+/, en az bir kere yinelenen a karakteriyle eşleşir.

  • /\d+/, bir veya daha fazla rakamla eşleşir.

  • /[abc]+/, her biri a, b veya c olacak şekilde bir veya birkaç karakterin yinelemesiyle eşleşir.

  • /(very, )*/ , ardından sıfır veya birkaç kere virgül ve boşluk gelen very sözcüğüyle eşleşir.

Nicelik belirteci uygulanmış parantez grupları içinde nicelik belirteçleri kullanabilirsiniz. Örneğin, aşağıdaki nitelik belirteci, word ve word-word-word öğeleriyle eşleşir:

/\w+(-\w+)*/

Varsayılan olarak, normal ifadeler doyumsuz eşleşme olarak bilinen bir eşleşme gerçekleştirir. Normal ifadedeki herhangi bir alt desen (örn. .*) normal ifadenin diğer bölümüne ilerlemeden önce dizede olabildiğince çok karakterle eşleşmeye çalışır. Örneğin, şu normal ifadeyi ve dizeyi göz önünde bulundurun:

var pattern:RegExp = /<p>.*<\/p>/; 
str:String = "<p>Paragraph 1</p> <p>Paragraph 2</p>";

Normal ifade, dizenin tamamıyla eşleşir:

<p>Paragraph 1</p> <p>Paragraph 2</p>

Ancak yalnızca tek bir <p>...</p> grubuyla eşleşme yapmak istediğinizi varsayın. Bunu şu şekilde yapabilirsiniz:

<p>Paragraph 1</p>

Herhangi bir nicelik belirtecinden sonra soru işareti (?) ekleyerek, bu nicelik belirtecini tembel nicelik belirteci olarak değiştirin. Örneğin, tembel *? nicelik belirtecini kullanan şu normal ifade, sırayla <p> ve olabildiğince az sayıda karakter (tembel) ve sonra </p> içeren bir dizeyle eşleşir:

/<p>.*?<\/p>/

Nicelik belirteçleriyle ilgili olarak şu noktaları unutmayın:

  • {0} ve {0,0} nicelik belirteçleri, bir öğeyi eşleşmeden hariç tutmaz.

  • /abc+*/ öğesinde olduğu gibi, birden çok nicelik belirtecini birleştirmeyin.

  • Nokta (.), ardından * nicelik belirteci gelse de, s (dotall) bayrağı ayarlanmadan satırlara yayılmaz. Örneğin, şu kodu göz önünde bulundurun:

    var str:String = "<p>Test\n"; 
    str += "Multiline</p>"; 
    var re:RegExp = /<p>.*<\/p>/; 
    trace(str.match(re)); // null; 
     
    re = /<p>.*<\/p>/s; 
    trace(str.match(re)); 
        // output: <p>Test 
        //                    Multiline</p>

Daha fazla bilgi için, bkz. Bayraklar ve özellikler.