Avatar billede axkris Nybegynder
24. juni 2004 - 12:45 Der er 6 kommentarer og
1 løsning

Fejl i reg.exp.-script

Hej

Jeg har dette script, som sletter mine style-tags. Og det ser ud til at virke meget godt (ved dog ikke om det virker ikke alle "situationer").

Function StripStyle(ByRef asHTML)
    Set regEx = New RegExp
    regEx.IgnoreCase = True
    regEx.Global = True
    regEx.Pattern = "(<style[^<]+<\/style>)"
    StripStyle = regEx.Replace(asHTML, "")
    Set regEx = Nothing
End Function

Nu har jeg lavet et andet script, som skal slette script-tagene, men det virker slet ikke. Hvorfor?

Function StripScript(ByRef asHTML)
    Set regEx = New RegExp
    regEx.IgnoreCase = True
    regEx.Global = True
    regEx.Pattern = "(<script[^<]+<\/script>)"
    StripScript = regEx.Replace(asHTML, "")
    Set regEx = Nothing
End Function

F.eks. sletter scriptet ikke følgende kode:

<script language="JavaScript"><!--
MSFPhover =
  (((navigator.appName == "Netscape") &&
  (parseInt(navigator.appVersion) >= 3 )) ||
  ((navigator.appName == "Microsoft Internet Explorer") &&
  (parseInt(navigator.appVersion) >= 4 )));
function MSFPpreload(img)
{
  var a=new Image(); a.src=img; return a;
}
// --></script>
Avatar billede erikjacobsen Ekspert
24. juni 2004 - 13:02 #1
Det er vel fordi der står "<" i javascript-eksemplet mellem <script> og </script>
Avatar billede axkris Nybegynder
24. juni 2004 - 13:39 #2
Og det skal slettes?

Sådan (det 1.):
regEx.Pattern = "(<script[^]+<\/script>)"

Eller sådan (det 2.):
regEx.Pattern = "(<script[^<]+\/script>)"

Og vil det så også sige, at mit style-script er forkert?
Avatar billede erikjacobsen Ekspert
24. juni 2004 - 13:45 #3
I princippet er style-scriptet forkert, men "<" forekommer ikke naturligt i
CSS kode. Nej, ingen af dem nu nævner vil virke. Jeg kender løsninger, men ikke
lige i VBs udgave af regulære udtryk.
Avatar billede axkris Nybegynder
24. juni 2004 - 13:55 #4
Hvilken løsning vil det så være - lytter spændt?
Avatar billede axkris Nybegynder
24. juni 2004 - 13:57 #5
For resten, kan man ikke bare sige:

regEx.Pattern = "(<script??????script>)"

Sagt med andre ord; kan man så ikke slette alt mellem "<script" og "script>" ? Det ville da virker - right?
Avatar billede axkris Nybegynder
24. juni 2004 - 13:58 #6
Altså hvor man undgår < og > som jo kan opfattes som størreend og mindreend.
Avatar billede axkris Nybegynder
24. juni 2004 - 14:47 #7
Lukker og slukker :) skal bruge et hurtigt svar.
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
Kurser inden for grundlæggende programmering

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