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
Ç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:
Nasıl JavaScript bir PHP düzenli ifade...
Nasıl bir kullanırken birden çok hatla...
Nasıl Düzenli İfade, JavaScript için b...
Nasıl JavaScript düzenli ifade eşleşen...
Nasıl bir düzenli ifade içinde birden ...