2011-12-20 16 views
11

Ölçütleri belirtmek için JavaScript regex'indeki kıvrımlı parantezler kullanılır. Böylece aa, aaa ve aaaa ile eşleşecekJavascript regex'indeki küme parantezlerinin kullanımı tüm modern tarayıcılarda aynı mıdır?

. Böyle bu nicelik yanlış yazarsanız Ama:

x{1,x} 

O en azından Firefox değişmez metin "{x 1} x" eşleşir.

Bu davranış, modern tarayıcılarda yaygın mıdır?

ECMA standardı bu davranışı yasaklar ve diş tellerinin kaçmasını gerektirir.

(Arka plan: Ben işte JavaScript regexes için ayrıştırıcı yazmak zorunda.)

+1

Eww ... Güzel hata atar: bu yolu

Java

  • davranır! Yeni RegExp() ',' // 'veya her ikisini de çağırdığınızda olur mu? – fge

    +8

    T şartnamesinden kaçma gerekliliği hakkında nerede deniyor? QuantifierPrefix'in ilgili tanımlaması '{DecimalDigits, DecimalDigits}' dır, dolayısıyla '{1, x}' bir niceleyici olarak yorumlanmamalıdır, çünkü x' bir DecimalDigit' değildir - bu nedenle davranış özellikleriyle tutarlı görünmektedir . – pimvdb

    +1

    'PatternCharacter, SourceCharacter'dır, ancak ^ $ \ 'den biri değil. * +? ( ) [] {} | 'Bu yüzden küme parantezleri bir desen karakteri olamaz. – Calmarius

    cevap

    5

    Ben JavaScript ve tarayıcılar için bilmiyorum ama bu ben umuyordum davranıştır ve ben gördük düzenli ifadelerde geçmiş.

    • C#:

      Yani onların davranışları üzerindeki farklı regex motorları test bu şekilde

    • Python davranır: bu şekilde

    • Perl davranır davranır bu şekilde

    • PHP: Kural

    İlgili konular