SORU
30 Aralık 2009, ÇARŞAMBA


Nasıl birden çok hatları üzerinden JavaScript düzenli ifade kullanmak?

var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre.*?<\/pre>/gm );
alert(arr);     // null

Bu yeni satır karakterleri üzerinde yayılmış olsa da ÖN blok alınmak istiyorum, istiyorum. 'M' bayrak yok sanıyordum. Değil.

Göndermeden önce cevap here bulundu. JavaScript (üç kitap, çalışılan saat okuma) biliyordum ve bu YÜZDEN de mevcut bir çözüm olmadığını düşündüm, zaten sonrası için cesaret edeceğim.burada taş atmak

Çözüm:

var ss= "<pre>aaaa\nbbb\nccc</pre>ddd";
var arr= ss.match( /<pre[\s\S]*?<\/pre>/gm );
alert(arr);     // <pre>...</pre> :)

Herkes daha az gizli bir yol var mı?

Edit: this benimkinden bile bulmak kolay olmadığından, kaldırmak istemiyorum ama kopyası.

[^] olarak öneriyor"". çok satırlı nokta Hala anlamıyorum ne [.\n] neden çalışmıyor. Bu JavaScript.. hüzünlü parçalarından biridir sanırım

CEVAP
20 NİSAN 2013, CUMARTESİ


Çok satırlı eşleştirmek için . yerine (.|[\r\n]) kullanmayın.

[\s\S] . yerine çok satırlı eşleştirmek için

Ayrıca, önlemek * yerine *? ? nicelik belirteci kullanarak gereken yerlerde oburluk. Bu büyük bir etkiye sahip olabilir.

Bakın yaptım kriter: http://jsperf.com/javascript-multiline-regexp-workarounds

Using [^]: fastest
Using [\s\S]: 0.83% slower
Using (.|\r|\n): 96% slower
Using (.|[\r\n]): 96% slower

Ayrıca [^] kullanabilirsiniz ama yorum aşağıda kaldırılmış. NB:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • CaliforniaMetin

    CaliforniaMe

    3 ŞUBAT 2013
  • Klemens Torggler

    Klemens Torg

    11 Mart 2008