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

  • Eddie Bravo

    Eddie Bravo

    17 EKİM 2006
  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010
  • tsweeney79

    tsweeney79

    21 Ocak 2008