Hlavní stránka > Diskuse > Proč nefunguje regex a .replace()?

Diskusní fórum

 Proč nefunguje regex a .replace()?
Autor: tester   (---.net.upcbroadband.cz)
Datum:   12. 03. 2016 15:11

Tento html kód vkládám do textarea:

<script>
CKE_init();
var editor = CKEDITOR.instances['edit'];

var hArray={'@a\1': /https\:\/\/(\d)\.bp\.blogspot\.com\//gi,
'@s\1': /src="https:\/\/(\d)\.bp\.blogspot\.com\//gi,
'@im': /(img)/gi,
'@d1': /<div class="separator" style="clear: both; text-align:
center;">/gi,
'@sw': /<span class="answer"><span class="answer"><br \/><\/span>/gi,
'@sp': /<span class="answer"><span class="answer">/gi,
'@ac': /align="center" /gi,
'@al': /align="left"/gi,
'@ar': /align="right"/gi,
'@cp\1': /cellpadding=("?\d*"? )/gi,
'@cs\1': /cellspacing=("?\d*"? )/gi,
'@tb': /<tbody>/gi,
'@st': /style="/gi,
'@ml': /margin-left: /gi,
'@mr': /margin-right: /gi,
'@tc': /"text-align: center;"/gi,
'@t:': /text-align: center;"/gi,
'@tl': /"text-align: left;"/gi,
'@tr': /"text-align: right;"/gi,
'@sa': /<span class="answer">/gi,
'@c1': /class="tr-caption-container" /gi,
'@c2': /class="tr-caption" /gi, // opravdu s mezerou?
'@/t': /<\/table>/gi,
'@t/': /<\/tbody>/gi,
'@/r': /<\/td><\/tr>/gi,
'@w\1': /width="(\d*)" /gi, // opravdu s mezerou?
'@h\1': /height="(\d*)" /gi,
'@bs': /<br \/><\/span><\/span><br \/>/gi,
'@s/': /<\/span><\/span><br \/>/gi,
'@/s': /<\/span><\/span>/gi,
'@ts': /<table /gi,
'@a/': /\/><\/a>/gi,
'@r/': /<tr><td /gi, // opravdu s mezerou?
'@/b': /<br \/>/gi,
'@au': /auto; /gi,
'@b\1': /border="(\d*)"/gi,
'@n\1': /anchor="(\d*)"/gi,
'@d2': /<div class="separator"/gi,
'@/d': /<tr><td /gi, // opravdu s mezerou?
'@da': /<\/a><\/div>/gi,
'@j': /\.jpg" \/>/gi,
'@p': /\.png" \/>/gi,
'@g': /\.gif" \/>/gi,
'@im': /;"><img /gi
};

editor.on( 'paste', function( evt ) {
for (k in hArray)
evt.data.dataValue = evt.data.dataValue
.replace( hArray[k], k );

});
</script>


hArray je pole, které říká za co bude zaměněno: regex.

Ještě jsem to upravil, abych ve Firefoxu získal logy:

editor.on( 'paste', function( evt ) {
for (k in hArray)
{
console.log(k + ': ' +evt.data.dataValue
.match( hArray[k] ));
evt.data.dataValue = evt.data.dataValue
.replace( hArray[k], k );
}


Toto je text, který tam vkládám:
<table align="center" cellpadding="0" cellspacing="0"
class="tr-caption-container" style="margin-left: auto; margin-right: auto;
text-align: center;"><tbody>
<tr><td style="text-align: center;"><a
href="https://1.bp.blogspot.com/-RIsL-uwaO4/VstRPZ0U6dI/AAAAAAAAChw/MHWTQ09DRGQ
/s1600/n%25C3%25A1let000.jpg" style="margin-left: auto; margin-right:
auto;"><img border="0" height="266"
src="https://1.bp.blogspot.com/-RGIsL-uwaO4/VstRPZ0U6dI/AAAAAAAAChw/MHWTQ09DRGQ
/s400/file0.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align:
Odpovědět
 
 Re: Proč nefunguje regex a .replace()?
Autor: tester   (---.net.upcbroadband.cz)
Datum:   12. 03. 2016 15:12

Toto je text, který tam vkládám:
<table align="center" cellpadding="0" cellspacing="0"
class="tr-caption-container" style="margin-left: auto; margin-right: auto;
text-align: center;"><tbody>
<tr><td style="text-align: center;"><a
href="https://1.bp.blogspot.com/-RIsL-uwaO4/VstRPZ0U6dI/AAAAAAAAChw/MHWTQ09DRGQ
/s1600/n%25C3%25A1let000.jpg" style="margin-left: auto; margin-right:
auto;"><img border="0" height="266"
src="https://1.bp.blogspot.com/-RGIsL-uwaO4/VstRPZ0U6dI/AAAAAAAAChw/MHWTQ09DRGQ
/s400/file0.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>some text
here.</i></td></tr>
</tbody></table>
<br /><span class="answer"><span class="answer"><br /></span></span>
<br />
<table align="center" cellpadding="0" cellspacing="0"
class="tr-caption-container" style="margin-left: auto; margin-right: auto;
text-align: center;"><tbody>
<tr><td style="text-align: center;"><a
href="https://4.bp.blogspot.com/-Nv8BBDRzK8/VstSBSdINlI/AAAAAAAACh4/UoCuxubTGlY
/s1600/n%25C3%25A1let002.jpg" style="margin-left: auto; margin-right:
auto;"><img border="0" height="266"
src="https://4.bp.blogspot.com/-NTv8BBDRzK8/VstSBSdINlI/AAAAAAAACh4/UoCuxubTGlY
/s400/file2.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i>some text
here.</i></td></tr>
</tbody></table>
<span class="answer"><span class="answer"><br /></span></span><br />
<br />
<br /><table align="center" cellpadding="0" cellspacing="0"
class="tr-caption-container" style="margin-left: auto; margin-right: auto;
text-align: center;"><tbody>
<tr><td style="text-align: center;"><a
href="https://2.bp.blogspot.com/-PVNoX7ffiw/VstXyi3a-dI/AAAAAAAACiI/-Ijv2cOzSwc
/s1600/F4F-3-45kg-2s.gif" style="margin-left: auto; margin-right: auto;"><img
border="0" height="400"
src="https://2.bp.blogspot.com/-PVWNoX7ffiw/VstXyi3a-dI/AAAAAAAACiI/file.gif"
width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i><span
class="answer"><span class="answer">some text
here.</span></span></i></td></tr>
</tbody></table>
<span class="answer"><span class="answer"><br /></span></span>
<span class="answer"><span class="answer"></span></span><br />
<br /><br />
<div class="separator" style="clear: both; text-align: center;">
<a
href="https://3.bp.blogspot.com/-_mOBQG5AEbE/Vs9U3jodYWI/AAAAAAAACm0/TuIvD8_N0w
/s1600/bounce%2Bf4f-3%2Bwildcat.jpg" imageanchor="1" style="margin-left:
1em; margin-right: 1em;"><img border="0"
src="https://3.bp.blogspot.com/-_mOBQG5AEbE/Vs9U3jodYWI/AAAAAAAACm0/TuIYvD8_N0w
/s1600/files.jpg" /></a></div>
<br />
<table align="center" cellpadding="0" cellspacing="0"
class="tr-caption-container" style="margin-left: auto; margin-right: auto;
text-align: center;"><tbody>
<tr><td style="text-align: center;"><a
href="https://2.bp.blogspot.com/-Wi3KwbjGO4/Vs9VBQNkd2I/AA
Odpovědět
 
 Re: Proč nefunguje regex a .replace()?
Autor: tester   (---.net.upcbroadband.cz)
Datum:   12. 03. 2016 15:16

No jak vidíte tak se to sem nevleze, To je vstupní text:
http://paste.ofcode.org/U5iEFJ4Ws9UFM85VRupny2

Toto je konzola:


http://paste.ofcode.org/5RjbD8Gmd48MyrLQKen5jD
Takže vidíte že to nenahradí ani ten blbý tag img. Některé tagy nahrazení jsou
ale asi 1/4 tagů není nahrazena. Co s tím?
Odpovědět
 Reakce strukturovaně  Λ nahoru


« Copyright © 2002 - 2017  Honza Petr | Reklama - Kontakt | Připojeno přes Kraja.cz | [ochrana osobních údajů] | RSS | Mapa webu »
Partneři: | Parabola | Povinné ručení | půjčky bez potvrzení příjmu Domény a webhosting půjčky bez registru inzeráty zdarma | hosting