Regexp probleem zoek naar = binnen <>

Pagina: 1 2 Laatste
Acties:
  • 697 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor de uitleg.

In principe is het niet IE-only. Ook in Mozilla zou het moeten werken, omdat het via de dom werkt. Het moet een browser zijn die de dom goed ondersteunt.

Er zit volgens mij maar een klein dingetje in de getxhtml.js waardoor het niet werkt in Mozilla:
// if (node.scopeName == "HTML")
Dit escapen en volgens mij werkt het dan ook in Mozilla. (snelle test gedaan)
Hier heb ik even wat in elkaar geflanst (kan je misschien weer werk schelen):
http://home.hccnet.nl/m.wargers/test/stringbuilder/
Maar goed, in principe was het ook bedoeld om de wysiwyg-code van Internet Explorer wat op te schonen.

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Waarom wil dit niet?
JavaScript:
1
str = str.replace(/(.*?)=([\'\"])(\d+)([\'\"])/gi, "$1=". function($2) { return getPix($1); }."\"$3px\"");

En dit wel?
JavaScript:
1
str = str.replace(/(.*?)=([\'\"])(\d+)([\'\"])/gi, function($2) { return getPix($1); });

M.a.w., hoe moet dat :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 23 April 2003 @ 17:21:
Waarom wil dit niet?
JavaScript:
1
str = str.replace(/(.*?)=([\'\"])(\d+)([\'\"])/gi, "$1=". function($2) { return getPix($1); }."\"$3px\"");

En dit wel?
JavaScript:
1
str = str.replace(/(.*?)=([\'\"])(\d+)([\'\"])/gi, function($2) { return getPix($1); });

M.a.w., hoe moet dat :)
wat doet getPix?

waarom niet gewoon zo:

JavaScript:
1
str = str.replace(/(\w+)=['"](\d+)['"]/gi, '$1="$2px"');

[ Voor 21% gewijzigd door crisp op 23-04-2003 17:47 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

omdat ik wil checken of er quootjes staan.
Zonee dan zet ie ze neer.
Dus die $1 (moet natuurlijk $2 zijn) is dan .... ehhh........ :X
hmmz... 8)7
Laat maar. :P

Effe opnieuw.
Hoe kan ik het volgende checken.

width=1
str.replace((.*?)=([\'\"])(\d+)([\'\"]) .....

Maar hoe kan ik bekijken of het OF een ' is, OF een ", OF nix?
Dus dat ie `m ook pakt als er geen quootje staat?

[ Voor 23% gewijzigd door Guillome op 23-04-2003 17:51 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

zoiets:

JavaScript:
1
str = str.replace(/(\w+)=['"]?(\d+)['"]?/gi, '$1="$2px"');

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Hoe weet jij dat altijd nou zo snel en goed? :z
:)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 23 April 2003 @ 18:03:
Hoe weet jij dat altijd nou zo snel en goed? :z
:)
practice my son, practice.... ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Hahahaha keeeej dan :o
Alleen voelt mijn bijdrage nu niet echt super nuttig meer.
Mja, de rest van de editor is mijn werk :P :P :P ;)

[ Voor 72% gewijzigd door Guillome op 23-04-2003 18:08 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

ok, ik ben redelijk ver gekomen; alles tussen <script> tags wordt niet meer geparsed. Hier en daar zitten er wat onvolkomenheden in, maar over het algemeen is het resultaat toch wel redelijk goed te noemen dacht ik zo :)

--> http://therealcrisp.xs4all.nl/upload/tidycode.html

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Kool man :)
Ik ben al ver met dat omzetten naar styles. Maar dat is een kolere werk man :z :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 23 april 2003 @ 22:25:
Kool man :)
Ik ben al ver met dat omzetten naar styles. Maar dat is een kolere werk man :z :)
Ik heb daar net een handige functie voor ingebouwd:

JavaScript:
1
2
3
4
5
6
7
8
9
function property(property, content) {

  property = property.toLowerCase();

  if (property == 'bgcolor') return 'style="background-color: '+content+'"';

  return property+'="'+content+'"';

}


Hier kan je de property uitvragen, en aan de hand daarvan het style-equivalent terugsturen (zoals ik hier met bijvoorbeeld bgcolor heb gedaan) :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Ja maar...
Stel.
Je hebt [img]"gla.jpg"[/img]
Dan moet ie 1 style hebben met alles erin.
Dat is effe lastig.

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 23 April 2003 @ 22:39:
Ja maar...
Stel.
Je hebt [img]"gla.jpg"[/img]
Dan moet ie 1 style hebben met alles erin.
Dat is effe lastig.
Dat is met een regexp ook niet meer te doen nee; het gaat me nu alleen even om de ranzige IE-only properties, de rest is op zich niet verkeerd in HTML hoor :)
Ik moet het nog verder uitbreiden, misschien ga ik alle <font> tags ook nog wel replacen met <span>'s :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Wordt wel een kicke project dan 8-)

`t Is effe lastig als je harde enters gebruikt in tags.
Dus
code:
1
2
3
4
<img
  height=10
  width=20
/>


Dit omdat regExp.match nu alleen maar <img pakt, en de rest niet.

edit.
Heeeeej :D `t gaat lukken,

edit2
Cool :D
Hij maakt nu van dit
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<img
height="10"
width="12"
width="1"
height=10
onmousedown=asdasdas
width=12"
width="1
src="gla.jpg" /><img2222222
height="10"
width="12"
width="1"
height=10
width=12"
width="1
src="gla.jpg" />

Dit:
JavaScript:
1
2
3
4
5
6
7
8
<img
 style="height:10px; width:12px; width:1px; height:10px; width:12px; width:1px;"     
 onmousedown=asdasdas
   
 src="gla.jpg" />
<img2222222
 style="height:10px; width:12px; width:1px; height:10px; width:12px; width:1px;"       
 src="gla.jpg" />

:9 :o :Y) :9~ 8-)

[ Voor 164% gewijzigd door Guillome op 23-04-2003 23:15 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 23 april 2003 @ 22:47:
Wordt wel een kicke project dan 8-)

`t Is effe lastig als je harde enters gebruikt in tags.
Dus
code:
1
2
3
4
<img
  height=10
  width=20
/>


Dit omdat regExp.match nu alleen maar <img pakt, en de rest niet.

[...]
Wie gebruikt er dan ook enters binnen een tag? 8)7

Enfin, ik heb de mijne nu ook zover dat hij style-equivalenten in 1 style= kan pakken; verder vervang ik <font> tags door <spans> :)

[ Voor 5% gewijzigd door crisp op 24-04-2003 00:07 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hij is geweldig, hij is briljant. _/-\o_
Vooral die indenting werkt mooi zeg.

Toch wat opmerkingen:
Bij comment tags (<!-- -->) gaat die volgens mij nogal de mist in.
Tekst binnen style tags hoeft in principe ook niet geparsed te worden, hoewel dit normaal gesproken geen problemen zou hoeven op te leveren volgens mij.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 24 April 2003 @ 00:15:
Hij is geweldig, hij is briljant. _/-\o_
Vooral die indenting werkt mooi zeg.

Toch wat opmerkingen:
Bij comment tags (<!-- -->) gaat die volgens mij nogal de mist in.
Tekst binnen style tags hoeft in principe ook niet geparsed te worden, hoewel dit normaal gesproken geen problemen zou hoeven op te leveren volgens mij.
Klopt, met comment tags gaat het nogal eens mis; gewoon eruit strippen is ook niet de juiste optie in alle gevallen.... Ga ik nog wat op verzinnen :)
Style tags heb ik zojuist toegevoegd voor het niet-parsen :)

edit: comments hopelijk ook (op een ranzige manier) opgelost

[ Voor 6% gewijzigd door crisp op 24-04-2003 00:45 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
comments hopelijk ook (op een ranzige manier) opgelost
Ik zie het ja. Dat had ook een oplossing van mij kunnen zijn ;)
Verder gaat me dit nogal de pet te boven, ik acht me niet meer verantwoordelijk voor het verdere verloop van dit topic.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

zo, nog een zut properties toegevoegd die omgezet kunnen worden naar style-equivalenten; ik zit een beetje met properties als margintop enzo; ik vervang het nu door padding-top: 0px; omdat dat zo hoort volgens w3c, maar IE verwacht natuurlijk weer margin 8)7
cellpadding zou ik moeten vervangen door padding in elke cel, cellspacing is ook zo'n leuke...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

??
Heb jij het nu ook al voorelkaar om alle styles="" in 1 te zetten???

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 24 April 2003 @ 10:00:
??
Heb jij het nu ook al voorelkaar om alle styles="" in 1 te zetten???
yep :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Aso, daar heb ik heel lang over gedaan :(
Hoe heb jij het dan? :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 24 april 2003 @ 19:15:
Aso, daar heb ik heel lang over gedaan :(
Hoe heb jij het dan? :)
Heel simpel, bij het doorlopen van de properties in een tag:
JavaScript:
1
2
  tag = tag.replace(/(\w+)="([^"]*)"/g, function($1,$2,$3) { return property($2,$3); } );
  tag = tag.replace(/(\w+)='([^']*)'/g, function($1,$2,$3) { return property($2,$3); } );

(alles tussen enkele en dubbele quotes dus) hou ik een string bij met de style-equivalenten.
Alles wat ik omzet door een style-equivalent vervang ik door '|X|'.
Als ik alle properties gehad heb vervang ik de eerste '|X|' door mijn opgebouwde style= string, en de rest van de '|X|' verwijder ik :)
Optimaal resultaat door optimale ranzigheid ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Zeg nou eens eerlijk, want ik zie het niet.
Welke is beter. Die van jou of deze van mij:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
      function restyle(str)
      {
              str = str.replace(/____/gi, "\n");
        str = str.replace(/(.*?)=[\'\"]?(\d+)[\'\"]?/gi, "style=\"$1:$2px;\""); // HIERO PAKT IE DE px NIEt
        
        var tmpStyle = "";
        tmpStyle += str.match(/style=([\"\'].*?[\"\'])/gi)
        tmpStyle = tmpStyle.replace(/style=([\"\'].*?[\"\'])/gi, "$1");
        tmpStyle = tmpStyle.replace(/\"|,/gi, "");
        tmpStyle = tmpStyle.replace(/;/gi, ";");
        tmpStyle = " style=\"" + tmpStyle + "\"";
                tmpStyle = tmpStyle.replace(/([\"|\'])\s/gi, "$1");
        tmpIdx = str.indexOf(" ");
        str = str.replace(/style=[\"\'].*?[\"\'][\s+\n]?/gi, "");
        str = str.substr(0, tmpIdx) + tmpStyle + str.substr(tmpIdx);
                return str.replace(/\x0A|\x0D/gi, "____ ");
      }

      function doe() 
      {
        var obj = document.getElementById("code");
        var str = obj.value.replace(/\x0A|\x0D/gi, "____ ");
        var newStr = "";
        var idx = 0;
        var tmpStr = "";
        while ((tmpStr = String(str.substr(idx).match(/<.*?>/))) != "null")
        {
          idx += tmpStr.length;
          tmpStr = restyle(tmpStr);
                    newStr += tmpStr;
        }
                newStr = newStr.replace(/>(.*?)</gi, ">$1\n<");
                newStr = newStr.replace(/;(\w)/gi, "; $1");
        newStr = newStr.replace(/____ /gi, "\n");
                newStr = newStr.replace(/\n\s+\n/gi, "\n");
                obj.value = newStr;
      }


edit

Ik zit nu alleen met het probleem dat ie de tekst achter een waarde (dus px of %) niet meepakt.
Dat komt door regel 4.
Hij pakt die = niet. Dus is $1 dan height="10" ipv height.
En $2 is leeg ipv 10.
Whelp!!!!!!

edit2.
Fokkerdefok.
Jemig de pemig.
En weer heeft hij het veel beter hoor.
BAH :P
Het enige betere van mij is dat die van mij met meerdere regels werkt. In 1 tag



edit3
Even een vraagje
Ik heb dit
boeh=hai
Hoe kan ik boeh eruit filteren?
Dit wil niet.
JavaScript:
1
2
var str = "Blah=boeh";
str = str.replace(/([a-z]+)=/gi, function($1) { alert($1);});

[ Voor 79% gewijzigd door Guillome op 24-04-2003 20:10 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 24 april 2003 @ 19:23:
[...]
edit3
Even een vraagje
Ik heb dit
boeh=hai
Hoe kan ik boeh eruit filteren?
Dit wil niet.
JavaScript:
1
2
var str = "Blah=boeh";
str = str.replace(/([a-z]+)=/gi, function($1) { alert($1);});
JavaScript:
1
2
var str = '<tag Blah=boeh bliep=blah>';
str = str.replace(/(\w+)=([^> '"]*)(?= |>)/g, function($1,$2,$3) { alert($2);alert($3); } );

$1 bevat in deze constructies altijd de complete match, $2 de match van het 1e subpattern, en $3 de match van het 2e subpattern :)
Je moet $1 opgeven, want de regExp kent de matches op volgorde toe. Als je alleen $2 en $3 opgeeft, dan zal $2 de complete match bevatten, en $3 de match van het 1e subpattern.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Aarghhhhh kut dat meen je niet. Stom dat heb ik wel geweten :(
Damn dan werkt die van mij waarschijnlijk wel.
Superb tnx, maar `t wordt toch wel jouw code, maar ik wil het ook effe snappen ;)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 24 April 2003 @ 23:14:
Aarghhhhh kut dat meen je niet. Stom dat heb ik wel geweten :(
Damn dan werkt die van mij waarschijnlijk wel.
Superb tnx, maar `t wordt toch wel jouw code, maar ik wil het ook effe snappen ;)
ik wist het zelf nog niet, maar kwam daar zo spelenderwijs achter :)
en uiteindelijk gaat het erom dat we allemaal wat leren :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Dat is zekers zo :)
Maar die van mij mag er ook wel wezen al zeg ik het zelf :P
http://members.home.nl/tegroen/regexp.html

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 24 April 2003 @ 23:56:
Dat is zekers zo :)
Maar die van mij mag er ook wel wezen al zeg ik het zelf :P
http://members.home.nl/tegroen/regexp.html
Heerlijk he zo'n zooitje regexps achter elkaar :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Hahahahhahaha zeker! :o :P Maar hij werkt wel! :)

edit
`t Is idd wel erg ja :o dat zie ik eigelijk nu pas :)

[ Voor 52% gewijzigd door Guillome op 25-04-2003 00:04 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:03:
Hahahahhahaha zeker! :o :P Maar hij werkt wel! :)

edit
`t Is idd wel erg ja :o dat zie ik eigelijk nu pas :)
Je hoeft je code niet meer te obfuscaten, dat is 'ie al :P

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

? Wat is dat dan?
Maarre dit komt zekerdeweten wel in mijn HTML editor hoor.
Koele optie man 8-)
edit
Ik heb nu wel alles gecommenteerd.
edit2
En oh ja, bij jou gaat src nog niet goed

[ Voor 44% gewijzigd door Guillome op 25-04-2003 00:13 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

obfuscaten is onleesbaar maken; wordt vaak gedaan om het rippen van code te voorkomen. Voorbeeldje (stukje copy-paste van mijn smiley shoot-um-up):

JavaScript:
1
2
3
4
function mS(i){with(SA[i]){if(!p){l+=x;t+=y;if(l<0||l>w){x*=-1;l+=2*x;
if(l>w)l=w}if(t<0||t>h){y*=-1;t+=2*y;if(t>h)t=h}
with(style){left=l;top=t}cS(i);if(m){if(n<0)iS('b',0);else n--}
sT('mS('+i+')',20)}}}

[ Voor 10% gewijzigd door crisp op 25-04-2003 00:13 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Oooh ja datte hahahaha nee dat hoeft niet meer nee :P Haha

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Wat gaat er niet goed bij src? heb je een voorbeeldje?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Zekah!
Vul dit maar eens in.
[img]"gla.jpg"[/img]

Dit binne de leuke dingen he :P
Ik zit nu met het probleem dat het wel op meerdere regels wil
<img
height
blaa

Maar niet meer op 1 regel :+

Maar die indent van jou is zwaaar cool!

ps. ik denk dat de TS wel blij mag zijn met zulk intensieve hulp :P

[ Voor 87% gewijzigd door Guillome op 25-04-2003 00:24 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:18:
Zekah!
Vul dit maar eens in.
[img]"gla.jpg"[/img]

Dit binne de leuke dingen he :P
Ik zit nu met het probleem dat het wel op meerdere regels wil
<img
height
blaa

Maar niet meer op 1 regel :+

Maar die indent van jou is zwaaar cool!
maar dat is gewoon al foute HTML die je erin stopt, als je width zonder quotes, of gewoon width="12" doet, dan gaat het goed. GIGO (Garbage In Garbage Out) noem ik dat; mijn script is niet bedoeld om fouten te verbeteren, maar om de HTML op te schonen.

Ik ben nog wat aan het nadenken over die indent, of dat ik 'm wel overal moet toepassen. Ik zou bijvoorbeeld <td>eenstukjetext</td> op 1 regel kunnen laten staan, is wel zo handig als er in plaats van eenstukjetext een <img> staat (als je dan newlines gaat gebruiken sluit de image vaak niet meer goed aan op de rand van je tablecell). Vraag is alleen wat voor criteria ik daarvoor moet gebruiken...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Dat is zeker een punt! Ik gebruik vrij vaak td`s op 1 regel.
Ik denk dat dat wel de beste manier is. Voor plaatjes een must.

Maar effe om te laten zien dat ik ook wel iets kan, bij mij pakt ie dat wel goed :P

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:28:
Dat is zeker een punt! Ik gebruik vrij vaak td`s op 1 regel.
Ik denk dat dat wel de beste manier is. Voor plaatjes een must.

Maar effe om te laten zien dat ik ook wel iets kan, bij mij pakt ie dat wel goed :P
Bij mij nu ook ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Neeeeeej ik weet zonet nog niet of ik jou wel mag :P

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 25 april 2003 @ 00:33:
Neeeeeej ik weet zonet nog niet of ik jou wel mag :P
Ik weet zo net nog niet of ik wel wil dat jij me mag :+
Ik zal de volgende keer eerst 10 minuten wachten goed?

[ Voor 12% gewijzigd door crisp op 25-04-2003 00:37 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Zolang ik je code erin mag pleuren vind ik het niet zo erg wat je van me vind van wat ik van jou vind.
Als je je code maar goed maakt :P


edit
Hahahahahaha ja dan lijkt het alsof je er nog moeite voor doet.
Dit is irritant gewoon :P

[ Voor 28% gewijzigd door Guillome op 25-04-2003 00:38 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:38:
[...]
Dit is irritant gewoon :P
Ik ben ook irritant ;) Doel bereikt zal ik maar zeggen.
Maar genoeg offtopic geleuter, we willen geen slapende modjes wakker maken wel?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Goeie!
Ik upload effe m`n nieuwe versie. Die werkt volgens mij prima nu. :)
http://members.home.nl/tegroen/regexp.html

[ Voor 23% gewijzigd door Guillome op 25-04-2003 00:45 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:45:
Goeie!
Ik upload effe m`n nieuwe versie. Die werkt volgens mij prima nu. :)
http://members.home.nl/tegroen/regexp.html
Niet helemaal, alles verschuift een spatie waardoor er ongeldige HTML ontstaat...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Ja ik weet het. Ik weet alleen nog niet hoe ik dubbele spaties eruit filter.
str.replace(/\s\s/gi, " ") noch str.replace(/ /gi, " ") noch str.replace(" ", " ") werkt goed

Ten minste, wel 1 keer.
Maar als je er dan nog eens op drukt, niet meer.

[ Voor 29% gewijzigd door Guillome op 25-04-2003 00:51 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 00:50:
Ja ik weet het. Ik weet alleen nog niet hoe ik dubbele spaties eruit filter.
str.replace(/\s\s/gi, " ") noch str.replace(/ /gi, " ") noch str.replace(" ", " ") werkt goed

Ten minste, wel 1 keer.
Maar als je er dan nog eens op drukt, niet meer.
ik zou zoiets doen:

JavaScript:
1
str = str.replace(/ +/gi, ' ');

(dus gewoon 2 of meer spaties vervangen door 1)
Maar in feite hoeft dat toch ook maar 1x?

[ Voor 7% gewijzigd door crisp op 25-04-2003 01:02 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Maar als ie na de 1e keer het fout doet, betekend het dat ie het ook fout doet als iemand een regel er al goed in heeft staan.
Jaaah goeie he ;)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 25 April 2003 @ 01:03:
Maar als ie na de 1e keer het fout doet, betekend het dat ie het ook fout doet als iemand een regel er al goed in heeft staan.
Jaaah goeie he ;)
ik zie toch wat dingetjes in je regexps die mogelijk dit fenomeen veroorzaken; ik ben nu echter te moe om er nog wat mee te doen. Ik kom er morgen echter graag op terug :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Oh cool. Pdima, dan hoor ik het morgen graag aan :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ps. ik denk dat de TS wel blij mag zijn met zulk intensieve hulp
Ik ben nog steeds in de zevende hemel :P

Als je nog meer complimenten wil, roep je maar ;)

Ik zat even te kijken welke methode sneller was. Die van Crisp of die van webfx. Die van Crisp is veel sneller. De methode van webfx is zeker voor grotere documenten onwerkzaam traag. Het heeft wel weer als voordeel dat het automatisch verkeerd geneste tags corrigeert, maar goed. Daar heb ik niet zoveel aan als het zo traag werkt.
Maar ik heb ook nog steeds een beetje het gevoel dat regexp's wat bedrijfsonzekerder zijn doordat ze gewoon met de botte bijl je tekst aanpakken. Maar dat zal wel aan mij liggen. In ieder geval zie ik geen fouten meer in de tidycode.

Wat ik nog mis is dat tags afgesloten worden. Ik heb nl net gemerkt dat Internet Explorer na het bezoeken van het document in designmode bepaalde sluit-tags (zoals </li>) worden gewist (behalve de laatste li-tags)
Het is niet dat ik erom vraag of zo hoor, echt niet. Ik wil het je gewoon laten weten.
Maar als je het maakt dan ben ik je nogmaals eeeeeeeuwig dankbaar. :*)
Natuurlijk alleen maar doen als je er zelf in geinteresseerd bent.

Ga zelf ook maar onderzoeken, moet eerst maar eens gaan slapen :z

Acties:
  • 0 Henk 'm!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:29

Pelle

🚴‍♂️

Wellicht wat mosterd na de maaltijd, maar beperk de slowchat voortaan even ;)

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 25 april 2003 @ 01:18:
[...]

Ik ben nog steeds in de zevende hemel :P

Als je nog meer complimenten wil, roep je maar ;)

Ik zat even te kijken welke methode sneller was. Die van Crisp of die van webfx. Die van Crisp is veel sneller. De methode van webfx is zeker voor grotere documenten onwerkzaam traag. Het heeft wel weer als voordeel dat het automatisch verkeerd geneste tags corrigeert, maar goed. Daar heb ik niet zoveel aan als het zo traag werkt.
Maar ik heb ook nog steeds een beetje het gevoel dat regexp's wat bedrijfsonzekerder zijn doordat ze gewoon met de botte bijl je tekst aanpakken. Maar dat zal wel aan mij liggen. In ieder geval zie ik geen fouten meer in de tidycode.
Regexps doen precies wat je vraagt hoor, dus wat dat betreft zijn ze absoluut bedrijfszeker. Het probleem is echter dat het eigenlijk een soort programmeertaal op zich is, en daar sluipen natuurlijk makkelijk bugs in, zeker gezien de nogal fuzzy syntax.
Daarbij zijn regexps buitengewoon snel :)
Wat ik nog mis is dat tags afgesloten worden. Ik heb nl net gemerkt dat Internet Explorer na het bezoeken van het document in designmode bepaalde sluit-tags (zoals </li>) worden gewist (behalve de laatste li-tags)
Het is niet dat ik erom vraag of zo hoor, echt niet. Ik wil het je gewoon laten weten.
Maar als je het maakt dan ben ik je nogmaals eeeeeeeuwig dankbaar. :*)
Natuurlijk alleen maar doen als je er zelf in geinteresseerd bent.

Ga zelf ook maar onderzoeken, moet eerst maar eens gaan slapen :z
Het probleem met <li>'s en <p>'s en nog wat tags is dat ze in HTML4 niet afgesloten hoeven te worden. In mijn 'parser' gaat dan de indenting fout omdat ik er van uitga dat ze wel afgesloten worden. De enige manier om dat te ondervangen is stack-based te gaan parsen en de meeste regexps weer overboord gooien.
Je moet dan per tag zeg maar rules gaan opgeven, en aan de hand daarvan door je document heenlopen. Zulke parsers bestaan wel denk ik, maar of ze ook in javascript bestaan betwijfel ik...

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik weet dat ze niet afgesloten hoeven te worden, maar persoonlijk wil ik ze toch afgesloten hebben.
Ik heb een soort regexp rule ervoor gemaakt. Bij een simpele test deed die het. Zal er morgen eens wat beter naar kijken.
strString = strString.replace(/<li>(.*)(?!<\/li>)(?=<li>)/gi, '<li>$1</li>');

Ik weet dat ze niet afgesloten hoeven te worden, maar persoonlijk wil ik ze toch afgesloten hebben.
Ik heb een soort regexp rule ervoor gemaakt. Bij een simpele test deed die het. Zal er morgen eens wat beter naar kijken.
strString = strString.replace(/<li>(.*)(?!<\/li>)(?=<li>)/gi, '<li>$1</li>');

strString = strString.replace(/<(.*)>(.*)(?!<\/\1>)(?=<\1>)/gi, '<$1>$2</$1>');
Dit lijkt ook te werken, met backreferences.
Hier een stukje over gevonden:
http://www.webreference.com/js/column5/values.html
Maar misschien dat het nu wat te algemeen wordt: alle tags worden dan met die regel aangepakt. Kan nu niet beoordelen of dat fout zou zijn, of dat het een regel is waaraan html sowieso aan moet voldoen.
Met tags zonder inhoud erin gaat het iig niet goed heb ik al gemerkt.

Nu toch echt maar gaan slapen.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 25 April 2003 @ 02:18:
Ik weet dat ze niet afgesloten hoeven te worden, maar persoonlijk wil ik ze toch afgesloten hebben.
Ik heb een soort regexp rule ervoor gemaakt. Bij een simpele test deed die het. Zal er morgen eens wat beter naar kijken.
strString = strString.replace(/<li>(.*)(?!<\/li>)(?=<li>)/gi, '<li>$1</li>');
Maar de laatste <li> dan? wat als die niet afgesloten word?
strString = strString.replace(/<(.*)>(.*)(?!<\/\1>)(?=<\1>)/gi, '<$1>$2</$1>');
Dit lijkt ook te werken, met backreferences.
Hier een stukje over gevonden:
http://www.webreference.com/js/column5/values.html
Maar misschien dat het nu wat te algemeen wordt: alle tags worden dan met die regel aangepakt. Kan nu niet beoordelen of dat fout zou zijn, of dat het een regel is waaraan html sowieso aan moet voldoen.
Met tags zonder inhoud erin gaat het iig niet goed heb ik al gemerkt.
Dat zijn geen backreferences, maar nog steeds look-aheads. Ik vraag me af of je bijvoorbeeld $+ in je regexp zelf kan gebruiken, of $& (recursie). Ga ik morgen eens mee testen
mmz, wel backreferences dus (de \1); ik wist niet eens dat dat kon, de Netscape js reference (javascript 1.3) maakt daar geen melding van :)
Nu toch echt maar gaan slapen.
* crisp 2

[ Voor 12% gewijzigd door crisp op 25-04-2003 10:06 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar de laatste <li> dan? wat als die niet afgesloten word?
Ik weet het, dat gaat niet goed. Dan moet je weer checken op ul of ol-tags wanneer die beeindigd worden.
Voor p-tags geldt dat ze geen blok-elementen mogen bevatten, dus dan zou er gecheckt moeten worden wanneer het eerstvolgende blokelement wordt geopend.
Ik weet niet precies welke elementen in html niet beeindigd hoeven te worden. td is er iig nog een. In principe zouden daar ook allemaal regeltjes voor zijn te vinden.
Die regexp van mij gaat ook de mist in als er attributen in li-tag staan.

Hier ben ik mee bezig geweest:
http://home.hccnet.nl/m.wargers/bookmarklets/edit.htm
Een soort bookmarklet die het huidige document kan editten.
Nu gebruik ik jouw tidycode-code.
Ik heb google er doorheen gehaald, maar na de tidy-code vertaalslag komt de tekst er te groot uit.
Gekeken waar het aan kon liggen --> je gebruikt font-size-adjust bij die functie om alles in het style-attribuut te zetten. Is dat wel de goede css-property? Moet je niet gewoon font-size, en dan een percentage teruggeven?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 25 April 2003 @ 11:50:
[...]
Hier ben ik mee bezig geweest:
http://home.hccnet.nl/m.wargers/bookmarklets/edit.htm
Een soort bookmarklet die het huidige document kan editten.
Nu gebruik ik jouw tidycode-code.
Ik heb google er doorheen gehaald, maar na de tidy-code vertaalslag komt de tekst er te groot uit.
Gekeken waar het aan kon liggen --> je gebruikt font-size-adjust bij die functie om alles in het style-attribuut te zetten. Is dat wel de goede css-property? Moet je niet gewoon font-size, en dan een percentage teruggeven?
De vertaalslag van <font size=x> naar een <span> met een css font-size is nog niet helemaal perfect. Ik weet ook niet 100% zeker of het 1 op 1 kan.
Wat ik nu doe:

als er + of - voorstaat (relatieve size dus):

size = (+|-)(\d+) --> font-size-adjust: $1$2;

anders (absolute fontsize):

size = \d+ --> {

als $1 = 0 --> font-size: 0px;
als $1 = 1 --> font-size: xx-small;
als $1 = 2 --> font-size: x-small;
als $1 = 3 --> font-size: small;
als $1 = 4 --> font-size: medium;
als $1 = 5 --> font-size: large;
als $1 = 6 --> font-size: x-large;
als $1 = 7 --> font-size: xx-large;
als $1 > 7 --> font-size: medium; (je moet toch wat)

}

Hier moet ik dus nog verder naar kijken.
Op het moment ben ik bezig een stukje stack-based parsing in te bouwen om niet afgesloten tags te kunnen ondervangen, maar daar ben ik nog wel even zoet mee vrees ik...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

? font-size:40px is het toch??

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja sorry, ik kende die css-property niet. Het blijkt wel te doen wat je wil dat het doet. Alleen doet die dat niet helemaal goed. Ik las wat uitleg over font-size-adjust en daar kreeg ik de indruk dat het helemaal ergens anders over ging.
IE5 kent geen font-size-adjust. Hmm, stomme browser, negeren die hap. :+

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 25 April 2003 @ 12:34:
Ja sorry, ik kende die css-property niet. Het blijkt wel te doen wat je wil dat het doet. Alleen doet die dat niet helemaal goed. Ik las wat uitleg over font-size-adjust en daar kreeg ik de indruk dat het helemaal ergens anders over ging.
IE5 kent geen font-size-adjust. Hmm, stomme browser, negeren die hap. :+
Ik heb de font-size-adjust inmiddels gewijzigd in een procentuele font-size. Ik ga nu uit van een verschil van 25% tussen de opeenvolgende sizes, wat aardig overheen lijkt te komen als ik google.com er doorheen haal.
Verder heb ik het zo aangepast dat alleen een size= in een font-tag wordt omgezet naar een style="font-size: xxx%"; anders wordt het inputveld zo raar :+

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Geweldig, dat werkt heel goed.
Nog een klein foutje gemerkt. Als je dezelfde tekst er een paar keer doorheen haalt, dan krijg je steeds new-lines erbij bij zo'n soort combinatie <tag>tekst</tag>.

Hmm, gebeurt alleen in Mozilla. Wie doet het nou goed en wie fout?
edit: ze doen het toch beide, ik begin een beetje te malen, geloof ik


Ik heb het nu met verschillende sites getest en ik zie eigenlijk geen problemen.

Dat was ik ook nog vergeten, bepaalde tags mogen wel genest worden: In een list mag je nog een list nesten. En binnen een tabel mag je nog een tabel nesten. Dus die methode van mij zal daarvoor ook niet werken.
Benieuwd naar dat stukje stack-based parsing van jou...

[ Voor 29% gewijzigd door Verwijderd op 25-04-2003 21:16 ]


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

:( Ik geef het op hoor. Ik krijg `m niet zo goed als jouwes. :)
Dan werkt dit niet, dan dat niet.
Nu zet ie onmouseovers ook in de style :(

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Ik vorder al redelijk met mijn stack-based opzet; ik krijg nu veel meer mogelijkheden ook om te bepalen of ik al dan niet indent. Zelfs constructies zoals:
HTML:
1
<a href="#" onclick="document.write('\"');if (a<b&&b>c) doe();">woei</a>

gaan goed in deze nieuwe versie.
Helaas is het nog te prematuur om online te zetten, dus jullie zullen nog even geduld moeten hebben :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Damndamndamn. Ik kan echt beter stoppen maar het is zow verslavend.
Maarre wat doet ie dan goed bij die regel? Of beter gezegd, wat deed ie eerst fout?

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 26 April 2003 @ 00:16:
Damndamndamn. Ik kan echt beter stoppen maar het is zow verslavend.
Maarre wat doet ie dan goed bij die regel? Of beter gezegd, wat deed ie eerst fout?
Voer maar in in mijn huidige script, en je ziet wat er fout gaat :)
Ik gebruik nu de volgende regexp om tags eruit te halen:
JavaScript:
1
/<\/?\w+([^<>"']|"([^"]|\\\")*"|'([^']|\\\')*')*>/g


uitleg:
code:
1
2
3
4
5
6
7
8
<\/?      begint met < eventueel gevolgt door een /
\w+       gevolgt door 1 of meerdere woord karakters
(
[^<>'"]          gevolgt door karakters die geen < > ' of " zijn
|"([^"]|\\\")*"  of gevolgt door een reeks karakters tussen " " die zelf geen " bevatten tenzij daar een escape teken voor staat
|'([^']|\\\')*'  of gevolgt door een reeks karakters tussen ' ' die zelf geen ' bevatten tenzij daar een escape teken voor staat
)*               en dat eventueel meerdere malen
>                gevolgt door een > teken


note dat ik hierdoor ook niet meer in staat ben om eventuele missende quotes aan te vullen; browsers zijn dat echter ook niet, dus ook hier geldt: GIGO :)

[ Voor 133% gewijzigd door crisp op 26-04-2003 00:45 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Shitterdeshit, daar zeg je wat.
Dat gaat bij mij ook niet goed :(
Ging eindelijk alles perfect, komt ie hier weer mee :P

edit
GIGO ruled! Maar dit is echt undone voor mij hoor.
Tjeemig klasse hoor! :)

Maar over GIGO, doet ie het bij jou wel goed als je helemaal geen quootje gebruikt?
Dus width=1?

[ Voor 46% gewijzigd door Guillome op 26-04-2003 00:51 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 26 april 2003 @ 00:40:
Shitterdeshit, daar zeg je wat.
Dat gaat bij mij ook niet goed :(
Ging eindelijk alles perfect, komt ie hier weer mee :P

edit
GIGO ruled! Maar dit is echt undone voor mij hoor.
Tjeemig klasse hoor! :)

Maar over GIGO, doet ie het bij jou wel goed als je helemaal geen quootje gebruikt?
Dus width=1?
yep:

boe=bah word: boe="bah"

(boe=bah is gewoon valid HTML, echter is het netter (en in XHTML verplicht) om attribuut waarden tussen quotes te zetten)

tenzij er een style-equivalent bestaat:

width=1 wordt: style="width: 1px;"

[ Voor 13% gewijzigd door crisp op 26-04-2003 01:11 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Maar hoe moet dat dan met een
onclick="if (a==b) c();"
??
Dan zoek je dus op een tekstreeks (in dit geval onclick), daarna op een =je, en dan eventueel een quootje (in dit geval de ")dan een tekstreeks tot en met OF een quootej, of een spatie (in dit geval na de if.)
En dan pakt ie dat als bewerk stukje, en zet ie quootjes omheen.
Hmm echt vaag, ik zou het knap vinden als je dit (lees: deze uitleg van mij) snapte.
Ik igg niet meer :)


edit
Even als extra uitleg.
Ik doe dit om er voor te zorgen dat alle values worden gequote
str = str.replace(/(\w+)=[\"\']?(.*?)[\"\']?\s/gi, function($1, $2, $3) { return fixQuotes($1, $2, $3); });

[ Voor 70% gewijzigd door Guillome op 26-04-2003 01:21 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 26 april 2003 @ 01:15:
Maar hoe moet dat dan met een
onclick="if (a==b) c();"
??
Dan zoek je dus op een tekstreeks (in dit geval onclick), daarna op een =je, en dan eventueel een quootje (in dit geval de ")dan een tekstreeks tot en met OF een quootej, of een spatie (in dit geval na de if.)
En dan pakt ie dat als bewerk stukje, en zet ie quootjes omheen.
Hmm echt vaag, ik zou het knap vinden als je dit (lees: deze uitleg van mij) snapte.
Ik igg niet meer :)


edit
Even als extra uitleg.
Ik doe dit om er voor te zorgen dat alle values worden gequote
str = str.replace(/(\w+)=[\"\']?(.*?)[\"\']?\s/gi, function($1, $2, $3) { return fixQuotes($1, $2, $3); });

Dit werkt prima, op het onclick verhaal na.
Haal ik die \s weg, dan is het precies andersom
dit is sowieso al geen geldig html (en gaat ook fout in je browser):

HTML:
1
<a href=# onclick=if (a==b) c();>woei</a>


net als:

HTML:
1
<input type=text value=blaat bliep>


2e is iets makkelijker uitleggen :)
wat moet dat gaan worden?

mogelijkheid 1:
HTML:
1
<input type="text" value="blaat" bliep />


syntactisch correct, maar bliep is geen geldige property voor een input-tag, dus HTML incorrect.

mogelijkheid 2:
HTML:
1
<input type="text" value="blaat bliep" />

zowel syntactisch correct, als ook HTML correct

Dit soort dingen kan je dus alleen maar doen als je voor elke tag weet wat wel en wat geen geldige property waarde is. Regexpen kan je dan al weggooien, want daarin kan je moeilijk voor elke HTML tag gaan aangeven wat wel en niet een geldige property value is (kan wel, maar dan krijg je 4 kantjes met 1 regexp)

Ik ga er dus van uit dat zodra een waarde met spaties wordt opgegeven, er al quotes omheen staan (geldig HTML), en daar match ik op.
De beginquote moet ook gelijk zijn aan de eindequote (single of double); daarbinnen mogen ook wel quotes staan gelijk aan de begin en eindquote, zolang ze maar escaped zijn.
Uiteindelijk match ik op \w+= en als de waarde daarna nog niet tussen quotes staat, zet ik er alsnog quotes omheen :)

[ Voor 7% gewijzigd door crisp op 26-04-2003 01:32 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

toch nog even snel een link naar mijn nieuwste versie: http://therealcrisp.xs4all.nl/upload/tidycode_stack.html
Deze doet nog geen indenting of wat dan ook, maar het verschil met de vorige versie is dat deze eerst alle tags en alle non-tags in een array zet.
Deze array lees ik vervolgens uit, en kan zo per tag bepalen wat ermee te doen. Als het daadwerkelijk een HTML tag is kan ik 'm dus op een stack pushen (zit er nog niet in), om later te kunnen bepalen of 'ie ook daadwerkelijk afgesloten wordt. Ik kan nu dus een soort boomstructuur gaan bouwen van tags, en uiteindelijk de boomstructuur weer gaan herschrijven naar HTML :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Crisp heeeelp!!!! :)
Ik kom echt absoluut niet uit het volgende.
Ik wil dat alle values die niet gequote zijn, quoten. ( hier zijn de () voor $1 enzo in de regexps even weggelaten)
Dan zoek je op een text tot een = teken. ' \w+='
Daarna een textreeks die geen quootjes en spaties bevat '.*[^\'^\"^ ]'
Maar dat doet ie niet.
Hoe moe`k da doen?

edit.
Fukkiedukkie, hoe ken da nou? Hij doet ut :D :o :+

[ Voor 19% gewijzigd door Guillome op 26-04-2003 18:16 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Wier ik wer :P
Effe een kickje, en effe een vraagje.
Hij werkt nu bijna perfect al :)
Maar nu even over dat indenten. Hoe doe je dat?
Want bij
<img>
<img>
moet ie niet indenten.
Maar bij
<tr>
<td>
wel.
Hoe hou je dat bij? Ik zie nergens een array of iets staan bij jou met tags die wel al dan niet ge-indent zou moeten worden (vage zin)

edit
Ik zit er ook nog mee dat ik neit weet hoe ik <script> tot </script> niet behandel.

[ Voor 17% gewijzigd door Guillome op 27-04-2003 17:45 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 27 april 2003 @ 17:29:
Wier ik wer :P
Effe een kickje, en effe een vraagje.
Hij werkt nu bijna perfect al :)
Maar nu even over dat indenten. Hoe doe je dat?
Want bij
<img>
<img>
moet ie niet indenten.
Maar bij
<tr>
<td>
wel.
Hoe hou je dat bij? Ik zie nergens een array of iets staan bij jou met tags die wel al dan niet ge-indent zou moeten worden (vage zin)

edit
Ik zit er ook nog mee dat ik neit weet hoe ik <script> tot </script> niet behandel.
<img> wordt bij mij <img /> oftewel een tag die meteen afgesloten wordt. Als dat zo is verhoog ik de indent dus niet. Bij gewone tags verhoog ik de indent, en met afsluit tags verlaag ik de indent.
Verder hou ik een global bij die ik van waarde verander op het moment dat ik bijvoorbeeld <script> tegenkom. Aan de hand van deze waarde kan ik bepalen of ik wel of niet de inhoud moet parsen.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Heej cool.
Dat script had ik net opgelost maar dat indent .. bedankt :D
Over dat scripts gedoe, ik vervang eerst alle <scripts>.*</scripts> door een (ik hoop) unieke textreeks. En wat ie vind slaat ie op in een array.
En op het laatst zet ie dat weer terug, en voor zover het lijkt, wil dat prima :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Okeeeeeeeej dan.
Wat vind je van deze?
http://members.home.nl/tegroen/regexp.html
Ben giga tevreden man :D :D :o WOEIII :)
Cool.
Ookal heb ik deze dan 'zelf' gemaakt, jou creditz komen er zeerzeker wel bij omdat ik het zonder jou waarschijnlijk niet zo netjes en snel en goed gemaakt had kunnen hebben.
Mega bedankt voor je hulp enzo!

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 28 April 2003 @ 00:09:
Okeeeeeeeej dan.
Wat vind je van deze?
http://members.home.nl/tegroen/regexp.html
Ben giga tevreden man :D :D :o WOEIII :)
Cool.
Ookal heb ik deze dan 'zelf' gemaakt, jou creditz komen er zeerzeker wel bij omdat ik het zonder jou waarschijnlijk niet zo netjes en snel en goed gemaakt had kunnen hebben.
Mega bedankt voor je hulp enzo!
Ziet er goed uit ja! :)
Je zal echter wel merken dat als je er eenmaal real-life voorbeelden in gaat proppen, dat het resultaat niet altijd precies is wat je voor ogen had (is in mijn versie trouwens ook zo), maar in grote lijnen zal het resultaat denk ik wel altijd beter zijn.

Ik ben dit weekend helaas niet verder gekomen met mijn stack-based versie waarbij ik dus ook onafgesloten tags zoals <p> mee kan afsluiten, maar zal daar van de week zeker nog wel mee verder gaan :)

keep you posted!

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Oh cool ik ben zeer benieuwd!!!
Maar ik ga zorgen dat je ook alleen je selectie kan opschonen :)
Dan heeft de gebruiker het meer onder controle. En kiezen voor indenting of XHTML maken of beide :)
En ik moet de font nog effe vervangen door span.
Maar 100% is het waarschijnlijk nooit.
Keep posting 2 u :) :D

Oh ja, wat moet ik erbij zetten?
Crisp? Email? Website?

[ Voor 9% gewijzigd door Guillome op 28-04-2003 00:20 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 28 April 2003 @ 00:17:
Oh cool ik ben zeer benieuwd!!!
Maar ik ga zorgen dat je ook alleen je selectie kan opschonen :)
Dan heeft de gebruiker het meer onder controle. En kiezen voor indenting of XHTML maken of beide :)
En ik moet de font nog effe vervangen door span.
Maar 100% is het waarschijnlijk nooit.
Keep posting 2 u :) :D

Oh ja, wat moet ik erbij zetten?
Crisp? Email? Website?
doe maar crisp - freesoftware[at]xs4all.nl
mijn site is een project waar ik nog nooit echt aan begonnen ben :o

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Oh ok, een echte (X)HTML JS goeroe die nieteens een website heeft? SCHANDE :P
Maar ik merk ineens dat mijnes niet op IE 5 werkt :( :(
Bij deze regel
var beginTag = String(str.match(/(\s*<[a-z|0-9]+)/gi)).toLowerCase();
"Onverwachte bepaler"

Oh ja, IE 5 kent de ? niet :(

[ Voor 39% gewijzigd door Guillome op 28-04-2003 00:33 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 28 April 2003 @ 00:23:
Oh ok, een echte (X)HTML JS goeroe die nieteens een website heeft? SCHANDE :P
Maar ik merk ineens dat mijnes niet op IE 5 werkt :( :(
Bij deze regel
var beginTag = String(str.match(/(\s*<[a-z|0-9]+)/gi)).toLowerCase();
"Onverwachte bepaler"
och, ik ben meestal te druk met anderen helpen; het komt er gewoon nooit van :P

wb je fout: ik vind het ook wel een beetje vreemde constructie die je daar gebruikt; je doet een str.match die een boolean teruggeeft (true/false). Vervolgens wil je die naar type String omzetten, en dan lowercase maken.
Waarom wil je dat, kan je niet gewoon met de boolean waarde verder werken?

var beginTag = str.match(/(\s*<[a-z|0-9]+)/gi); // beginTag is true of false

of als je toch perse een string wilt, kan je ook nog zoiets doen:

var beginTag = str.match(/(\s*<[a-z|0-9]+)/gi)? 'true':'false';

[ Voor 4% gewijzigd door crisp op 28-04-2003 00:36 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Neenee dat zie je verkeerd.
Die match geeft de match tussen de haakjes terug hoor :)
Dus '<img ' of iets dergelijk. Niet false of true.
Maar het ligt aan de ? ( aan het vraagteken )

[ Voor 12% gewijzigd door Guillome op 28-04-2003 00:43 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 28 April 2003 @ 00:41:
Neenee dat zie je verkeerd.
Die match geeft de match tussen de haakjes terug hoor :)
Dus '<img ' of iets dergelijk. Niet false of true.
Maar het ligt aan de ? ( aan het vraagteken )
Dat voorbeeld met de ? is een constructie:

var foo = bar? 1:0;

equivalent met:

if (bar) {
foo = 1;
} else {
foo = 0;
}

maar goed, ik wist niet dat een str.match ook nog de match teruggeeft. In het geval van meerdere matches, zou dat dan niet een array zijn? En dat je daarom niet kan casten naar een String? Kortom: als je de g modifier weglaat, doet 'ie het dan wel?
Of misschien ondersteund IE5 het gewoon nog niet, zou me niets verbazen eigenlijk...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Is idd een array bij meerdere matches.
En bedankt voor je ? 1:0 info, kan zeer handig zijn!
Maar het ligt aan de ?
Doe maar eens dit in IE 5
JavaScript:
1
2
  str = "Hallo Thomas"
  alert(str.replace(/\w+/, "Dag"));

Dat werkt wel.
Maar deze:
JavaScript:
1
2
  str = "Hallo Thomas"
  alert(str.replace(/\w+?/, "Dag"));

Niet
:S
Hoe kan je het dan oplossen als een tekstje niet persee hoeft voor te komen?
Zoals de \ ofzo

[ Voor 19% gewijzigd door Guillome op 28-04-2003 00:51 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 28 April 2003 @ 00:51:
Is idd een array bij meerdere matches.
En bedankt voor je ? 1:0 info, kan zeer handig zijn!
Maar het ligt aan de ?
Doe maar eens dit in IE 5
JavaScript:
1
2
  str = "Hallo Thomas"
  alert(str.replace(/\w+/, "Dag"));

Dat werkt wel.
Maar deze:
JavaScript:
1
2
  str = "Hallo Thomas"
  alert(str.replace(/\w+?/, "Dag"));

Niet
:S
Hoe kan je het dan oplossen als een tekstje niet persee hoeft voor te komen?
Zoals de \ ofzo
ik heb het net opgezocht: met het vraagteken maak je de match ungreedy; support hiervoor is pas ingebouwd in javascript 1.5 (ECMA versie 3); IE support deze versie (gedeeltelijk) pas vanaf IE 5.5, dus het klopt dat het in IE5.0 niet werkt...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Heb jij een idee dan hoe je dat kan nabootsen?
De * "Matches zero or more times"
Maar dat doet ie dus niet.
Als je \w* doet, geeft ie een false bij een teken dat niet gematched wordt door \w

edit.
Of niet... hmm ik test het net en * werkt ook op die manier.
Maar [\/]?
Hoe moet dat dan?
[\/]* zou ook kunnen, maar dan rekend ie meerdere ook goed, alhoewel dat geen probleem is maar toch

[ Voor 37% gewijzigd door Guillome op 28-04-2003 01:01 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

[\/]{0,1} misschien
maar het lijkt me sterk dat IE5 een enkele ? niet zou kennen; hij kent het alleen niet als karakter om de greediness van een match te reversen als in .*?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Hoe bedoel je?
\w+? werkt niet in ie 5 hoor :)
Maar wat is {} eigelijks dan? Dat ken ik geeneens.
Effe opzoeke :)

Oh ja nou doe`k dat :)
Tnx :)

:X :X :X
Dan werkt ie niet meer :(
Fuk dat wordt een hoop werk weer

[ Voor 34% gewijzigd door Guillome op 28-04-2003 01:08 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 28 april 2003 @ 01:04:
Hoe bedoel je?
\w+? werkt niet in ie 5 hoor :)
Maar wat is {} eigelijks dan? Dat ken ik geeneens.
Effe opzoeke :)

Oh ja nou doe`k dat :)
Tnx :)
\w+? werkt inderdaad niet in IE5 omdat je hier met je ? de match ungreedy maakt. Dat wil zeggen dat je matched op 1 of meerdere woord-characters, maar stopt met matchen op het moment dat je er ook 1 of meerdere hebt (in dit geval stop je dus al bij het eerste woord-character met matchen)
een greedy match \w+ gaat net zo lang door met matchen totdat hij een niet-woord-character tegenkomt.
Met andere woorden: een ? gebruikt als quantifier (zo heet dat) zal in IE5 geen problemen geven, een ? gebruikt na een andere quantifier (zoals +? *? ?? {2,3}?) is bedoelt om de quantifier ungreedy te maken, en dat wordt in IE5 dus niet ondersteund :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

even terugkomen op je oorspronkelijke voorbeeld:

JavaScript:
1
var beginTag = String(str.match(/(\s*<[a-z|0-9]+)/gi)).toLowerCase();


waarschijnlijk werkt dit ook:

JavaScript:
1
var beginTag = str.match(/(\s*<[a-z|0-9]+)/gi)[0].toLowerCase();


disclaimer: niet getest

ik zie hier geen ? in echter...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Neen maar het was de volgende regel :+ Maar het werkt idd, tnx nogmaals :P
str = str.replace(/(<\w*?)\s/i, "");

Maar zonder werkt ie ook
Alleen deze niet dus

tmpStyle += str.match(/style=([\"\'].*?[\"\'])/gi);

Die werkt zonder .*? niet goed meer.

Match MET vraagteken
style="border-width:0px;",style="width:100px;",style="height:100px;"

Match ZONDER vraagteken
style="border-width:0px;" cellspacing="0px" cellpadding="0px" style="width:100px;" style="height:100px;"

Regel:
style="border-width:0px;" cellspacing="0px" cellpadding="0px" style="width:100px;" style="height:100px;"

[ Voor 101% gewijzigd door Guillome op 28-04-2003 01:26 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 28 april 2003 @ 01:18:
Neen maar het was de volgende regel :+
str = str.replace(/(<\w*?)\s/i, "");

Maar zonder werkt ie ook
Alleen deze niet dus

tmpStyle += str.match(/style=([\"\'].*?[\"\'])/gi);

Die werkt zonder .*? niet goed meer.

Match MET vraagteken
style="border-width:0px;",style="width:100px;",style="height:100px;"

Match ZONDER vraagteken
style="border-width:0px;" cellspacing="0px" cellpadding="0px" style="width:100px;" style="height:100px;"

Regel:
style="border-width:0px;" cellspacing="0px" cellpadding="0px" style="width:100px;" style="height:100px;"
Dat moet je dus met een negated class oplossen omdat je alleen maar greedy kan matchen in feite:

tmpStyle += str.match(/style=(["'][^'"]*["'])/gi);

(note dat escapes in een characterclass bijna niet noodzakelijk zijn, alleen voor [ ] - en ^ eigenlijk :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Que? negated class? CharacterClass??
En ik wordt er gek van dat jij dit allemaal zo snel weet telkens :P
edit
En natuurlijk werkt het voortreffelijk!
Dus op deze manier
[^dit]* pakt ie alles behalve 'dit'?

Enneh over dat escapen, dat doe ik omdat mijn editor (editPlus) anders zo raar syntax-hilight doet.
Dan ziet ie het als string :)

[ Voor 73% gewijzigd door Guillome op 28-04-2003 01:32 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 28 April 2003 @ 01:28:
Que? negated class? CharacterClass??
En ik wordt er gek van dat jij dit allemaal zo snel weet telkens :P
edit
En natuurlijk werkt het voortreffelijk!
Dus op deze manier
[^dit]* pakt ie alles behalve 'dit'?
nee, het is en blijft een characterclass, dus [^dit]* pakt alles behalve d, i of t ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Ah dat is dus een CharacterClass ;)
Ok Tnx :D

Leuk man, privé les ;) Ik leer wel giga veel zo, echt tof!!

Enneh wel een gedoe hoor zonder '?'

Van
str = str.replace(/<[^\/].*?>/gi, function($1) { malert($1); return toXHTML($1) } );
Naar
str = str.replace(/<[^\/][^>]*>/gi, function($1) { malert($1); return toXHTML($1) } );
Is dat de goeie manier?

[ Voor 102% gewijzigd door Guillome op 28-04-2003 01:40 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 28 april 2003 @ 01:35:
Ah dat is dus een CharacterClass ;)
Ok Tnx :D

Leuk man, privé les ;) Ik leer wel giga veel zo, echt tof!!
tsja, ik hou het maar op de terminologie die gebruikt wordt in de engelstalige boeken die ik heb en de tutorials op internet; ik zou ook niet weten hoe je dat in het Nederlands goed zou moeten verwoorden.

En och, ik leer zo ook nog wel eens bij; ik dacht bijvoorbeeld dat een match() een boolean teruggaf, dat blijkt dus een array te zijn :)

Ken je overigens de search() al? Die geeft de positie van de 1e match terug:

var str = 'abcdefg';
var startPos = str.search(/c/);
alert(startPos);

Maar de les is over nu, * crisp gaat slapen :)

Edit: ja, dat is de goede manier :)

[ Voor 5% gewijzigd door crisp op 28-04-2003 01:42 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Heej das een coole.
En ken jij de RexExp.leftContext enzo ook al?
var str = 'abcdefg';
str.search(/c/);
alert(RegExp.leftContext);
Geeft "ab"
Maar truste!!! En Tnx nogmaals

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 28 April 2003 @ 01:43:
Heej das een coole.
En ken jij de RexExp.leftContext enzo ook al?
var str = 'abcdefg';
str.search(/c/);
alert(RegExp.leftContext);
Geeft "ab"
Maar truste!!! En Tnx nogmaals
yep, die ken ik sinds ik vanmiddag het hoofdstuk RegExp in mijn Definitive JavaScript Guide (die ik gewonnen heb met een PHP contest) gelezen heb. Stom dat ik dat stukje over match() over het hoofd gezien heb 8)7
Ik ben dus eigenlijk in PHP pas met RegExpen begonnen; daar heb je ook wel coole features zoals recursie en lookbehind :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Zeg maar dag tegen IE 5
Ik heb alle ?tjes vervangen, maar nu blijkt dat ie geen function kan gebruiken in de regexp.
Dus str.replace(/\w+/, function($1) { return "asd"; });
Dan replacet ie \w+ met de string 'function($1... etc.
Dus helapidaka maar ie 5 werkt niet

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Effe een subtiele kick.
Mijn versie is vrij ver af nu :)
http://members.home.nl/tegroen/regexp.html
Hij kan nu ook missende tags vinden, en als je bijv. alleen </div> hebt staa, vind ie ook. (nog niet foutloos moet /> tags
PHP,ASP houdt ie rekening mee.
Alleen commentaar nog niet, dat moet nog.
Naja check and ... bewonder :P

Enneh Crips? How are U doin`? :P

:'( :'( :'( :'(
Niet eens een complimentje van Crisp
:'( :'( :'( :'(

[ Voor 26% gewijzigd door Guillome op 01-05-2003 19:14 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XLerator schreef op 01 mei 2003 @ 16:55:
[...]
Enneh Crips? How are U doin`? :P
druk, druk, druk, dus.... nog niet aan toegekomen...

Intentionally left blank

Pagina: 1 2 Laatste