Avatar billede tdaugaard Nybegynder
25. maj 2001 - 23:45 Der er 21 kommentarer og
1 løsning

Check for om der er en < / > inden i mellem en < > blok..

Er det muligt f.eks. vha. RegExp at checke for om der i en streng forekommer en < eller en > inden i en <..> blok ? Men! De må godt være der hvis de er inden i \"\". Det er til at checke en streng for om HTML\'et er OK.

flg. linier skal valideres som OK:

Dette <b>er</b> en test
Dette <input type=\"button\" value=\"< ER >\"> en test

flg. linie skal IKKE valideres som OK:

Dette <ber</b> er en test

(der vil ber/<b jo faktisk stå som et HTML tag imellem < og >)
Avatar billede tdaugaard Nybegynder
25. maj 2001 - 23:47 #1
Grunden til at jeg leder efter en RegExp til dette er at det ville være en DEL langsomt at skulle checke det vha. en for {} løkke hvor man går hele strengen igennem da denne kan være lang.
Avatar billede erikjacobsen Ekspert
26. maj 2001 - 06:45 #2
Det her er strengt taget ulovlig HTML: 
  Dette <input type=\"button\" value=\"< ER >\"> en test
Det burde være
  Dette <input type=\"button\" value=\"&lt; ER &gt;\"> en test

Så der må rent faktisk ikke være <> i en <...>.
Avatar billede tdaugaard Nybegynder
26. maj 2001 - 13:27 #3
erikjacobsen:> hmm .. til dels, ja. Så længe < & > er inde i \"\" så godtager BÅDE IE & NS (~4, ved ikke med <)

Men du har sådan set fuldstændigt ret. Hvilket sikkert også vil gøre det nemmere at lave en funktion til validering. Er det mon noget du kan klare \'O store mester ? *GG*
Avatar billede erikjacobsen Ekspert
26. maj 2001 - 14:36 #4
Mnjah. Problemet med < og > er at hvis de er tilladt er det lidt svært at se
hvad der er lovligt. Her mangler der to \"-ere, men umiddelbart er det lovligt:

<img src=\"blablabl.gif><img src=blyp.gif\">

Jeg skal lige vide hvad du skal bruge det til - og hvorfor JavaScript? Er det
forretningshemmelighed kan du maile :) Løsningen skal nok komme her.
Avatar billede tdaugaard Nybegynder
26. maj 2001 - 17:11 #5
<img src=\"blablabl.gif><img src=blyp.gif\">

her vil \"blablabl.gif><img src=blyp.gif\" blive opfattet som billedet og derfor er den jo lovlig, men da > og < ikke er lovlige i Windows filnavne vil jeg tage den som ulovlig.

Det er til at kunne validere om folk i et <textarea> ikke ved et uheld har fået skrevet

\"Dette <ber</b> en test\" (eksempel) da det vil resultere i et output som ligner \"Dette en test\" da \"er\" vil være en del af et tag, eller ligne det.

Hvis bare du kan lave det så der SKAL være en > efter en < før der kommer endnu en < så vil det være helt fint :-) (var det sort snak ?)
Avatar billede jakoba Nybegynder
27. maj 2001 - 13:33 #6
Det er nogenlunde klar hvad du ønsker. men der skal en større parser til for at opfylde ønsket for der er ikke rigtig nogen måde at sikre sig inod < og > indeni tags. for fx i:

<a href=\"fil.html\" onclick=\"if ( a<b || c>a || d<>e ) func1(b) else func2(a)\">

og her er det ikke engang lovlig at erstatte javascript operatorerne med &lt; og &gt;

mvh JakobA
Avatar billede tdaugaard Nybegynder
27. maj 2001 - 13:41 #7
jakoba:> ja, okay det kan jeg godt se. Men det jeg faktisk skal bruge det til er solutions2all.dk, hvor admins (som f.eks. mig) kan bruge HTML i deres svar/kommentarer. Her for leden da da jeg lige skulle teste det fik jeg skrevet :

Dette <ber</b> en test og det så jo ikke så kønt ud ;-)

Så det jeg skal bruge er altså bare en BASIC validering af HTML da der højst sandsynligt ikke vil indgå javascript i det HTML man bruger. Det er også mere til mig selv for at undgå at jeg ikke får afsluttet nogle tags.

Så, hvis der er nogle der kan skal jeg bare have en der kan det jeg skrev til sidst i min forrige kommentar. Der skal altså ikke være noget check for om < & > er inde i en \"\".
Avatar billede erikjacobsen Ekspert
27. maj 2001 - 16:08 #8
jam\'n jakoba. Din overholder ikke standarden ..... der skal stå &lt; og &gt; - ingen
gør det - stort set - men det er standarden.
Avatar billede tdaugaard Nybegynder
27. maj 2001 - 16:13 #9
erikjacobsen:> Tror du ikke at BÅDE IE og NS vil give JS fejl hvis du kører:

<a href=\"fil.html\" onclick=\"if ( a &lt; b || c&gt;a || d&lt;&gt;e ) func1(b) else func2(a)\">

?

&lt; og &gt; er jo kun til den visuelle præsentation af < & > tegnene.
Avatar billede erikjacobsen Ekspert
27. maj 2001 - 16:15 #10
prøv lige, td - please !
Avatar billede tdaugaard Nybegynder
27. maj 2001 - 16:17 #11
hmm .. det lyder som om at den gerne vil køre det ;o) men prøver lige ..
Avatar billede tdaugaard Nybegynder
27. maj 2001 - 16:19 #12
Det var da utroligt ... hvad med NS ? Men både NS, IE og Opera fatter da < & > imellem \"\" ..
Avatar billede erikjacobsen Ekspert
27. maj 2001 - 16:49 #13
Det er standarden, td :)  Og det du får med server.htmlencode (eller hvad den
nu hedder i ASP) - det er altid lovligt, og strengt taget nødvendigt at bruge
den funktion på alt \"ikke\"-HTML.


også hilsen fra sofie jacobsen, der øver sig på at blive ekspert. Hun kan selv
skrive sit fornavn.
Avatar billede tdaugaard Nybegynder
30. maj 2001 - 01:59 #14
Okai ... men ehm .. det er ikke noget du kan lave med noget RegExp sjov ?
Avatar billede jakoba Nybegynder
31. maj 2001 - 08:59 #15
en simpel regExp til at sikre ingen extra < imellem < og >:

/<[^<]*>/.test( \"Dette <ber</b> en test og det så jo ikke så kønt ud ;-)\" );

finder \"</b>\", men finder ikke \"<ber</b>\".

mvh JakobA
Avatar billede jakoba Nybegynder
31. maj 2001 - 09:09 #16
men:

/<[^<]*>/.test( \'Dette <input type=\"button\" value=\"< ER >\"> en test\' );

vil (forkert) finde \'< ER >\' og \'< ER >\">\' men ikke \'<input type=\"button\" value=\"< ER >\">\'
Avatar billede frankbirkmoller Nybegynder
31. maj 2001 - 12:19 #17
Hvad med denne kode kan den bruges?

function checkdata(form) {
            if (form1.formfelt1.value.indexOf(\">\") != -1 | form1.formfelt1.value.indexOf(\"<\") != -1 | form1.formfelt1.value == \"\") {
            alert(\"FEJL!\")
            return false
            }
    return true;
}
Avatar billede erikjacobsen Ekspert
31. maj 2001 - 12:24 #18
Du skal egentlig se om det går galt, jakoba, ikke om det går godt:

/<[^>]*</.test( \'Dette <input type=\"button\" value=\"< ER >\"> en test\' );

altså findes der to <-ere uden en > imellem, så er der en fejl.
Avatar billede tdaugaard Nybegynder
01. juni 2001 - 22:42 #19
Okaay .. men hvordan bruger jeg så lige den i praksis ?
Avatar billede tdaugaard Nybegynder
14. juni 2001 - 13:39 #20
e.j., kan du ikke lige svare også ? Så kan i få point ..
Avatar billede erikjacobsen Ekspert
14. juni 2001 - 13:44 #21
Det er for besværligt at flytte musen over i den radioknap med \"Svar\",
så det gider jeg ikke :)
Avatar billede tdaugaard Nybegynder
14. juni 2001 - 13:48 #22
e.j.:> hmm .. nu VIL jeg endeligt give dig point og så vil du ikke have dem ? tsk tsk .. ældre mennesker nu til dags ;O) J/k
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester