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 .