Avatar billede zeusdk Nybegynder
20. februar 2003 - 21:19 Der er 14 kommentarer og
1 løsning

Reg.exp.-fejl: Uventer kvantor

Hej

I IE 6.0 går det fint, men i IE 5.5 får jeg en "uventet kvantor" i følgende linien. Der er desværre ikke angivet noget tegn, hvor fejl skulle opstå:

var rx = new RegExp( "(.*?)\\s*(\\.)\\s*([A-Z])", "gi" );

Er det en, som kan hjælpe?
___________________________________________

var rx = new RegExp( "(.*?)\\s*(\\.)\\s*([A-Z])", "gi" );
      var result = "";
    var savlast;
      var str1 = form.beskrivelse.value;
      do {
        var matches = rx.exec( str1 );
          if (!matches) break;

          result += matches[1] + '. ' + matches[3].toUpperCase();
          savlast = rx.lastIndex;
      } while (1);

      form.beskrivelse.value = result + str1.substr(savlast);

      // Blanke før/efter kommaer
      form.beskrivelse.value = form.beskrivelse.value.replace( /\s*(,)\s*([a-z])/gi, "$1 $2" );

    form.beskrivelse.value = form.beskrivelse.value.replace( /\s+$/g, "" );
Avatar billede jespernaur Nybegynder
20. februar 2003 - 22:31 #1
Eksperiment: Går fejlen væk, hvis du fjerner "?" og skriver

var rx = new RegExp( "(.*)\\s*(\\.)\\s*([A-Z])", "gi" );

(jeg er godt klar over, at det ødelægger funktionen af udtrykket!)
Avatar billede jespernaur Nybegynder
20. februar 2003 - 23:46 #2
(du skal vist snart til at få gjort noget ved at få tjent lidt point...)
Avatar billede zeusdk Nybegynder
21. februar 2003 - 14:31 #3
Jo, nu skal du bare høre. (Jeg er stadig ved at teste i IE5.5).

Den "uventede kvantor" kommer ikke mere, men hvis jeg f.eks. skriver: "Hans gik en tur .Den var go." Så går browseren ned - ja, ikke mindre, den går ned, og jeg har afprøvet det nogle gange nu :-) Den har ingen problemer med at gøre alle andre erstatninger, men lige med punktumet, der skal flyttes en tak til venstre, ja så går den altså ned.

Jeg har testet mig frem til, at fejlen sker i:

var rx = new RegExp( "(.*)\\s*(\\.)\\s*([A-Z])", "gi" );
      var result = "";
    var savlast;
      var str1 = form.beskrivelse.value;
      do {
        var matches = rx.exec( str1 );
          if (!matches) break;

          result += matches[1] + '. ' + matches[3].toUpperCase();
          savlast = rx.lastIndex;
      } while (1);
Avatar billede jespernaur Nybegynder
21. februar 2003 - 17:32 #4
Jeg forstår ikke det med IE5.5, den bruger jeg også (godt nok engelsk version), og jeg har slet ikke dine problemer. Når jeg trykker Help->About skriver den bla:

Version 5.50.4522.1800IC
Update Versions:;SP1;Q323759
Avatar billede jespernaur Nybegynder
21. februar 2003 - 17:55 #5
Jeg har lavet en uden "?", og rettet den så den faktisk burde virke:

  var rx = new RegExp( "([^\\.]*)\\s+(\\.)\\s*([A-Z])", "gi" );
Avatar billede zeusdk Nybegynder
21. februar 2003 - 18:47 #6
Punktum-fejlen er der desværre stadig, men det var ikke IE5.5, som jeg anvendte, men IE5.00.2920.000
Avatar billede jespernaur Nybegynder
21. februar 2003 - 20:22 #7
Hvad skriver den, hvis du kører dette her:

<html>
<head>
</head>
<body>

<SCRIPT Language="JavaScript">
<!-- hide from old browsers
  function JSVer(){
    return "1.0"
    }
//-->
</SCRIPT>
<SCRIPT Language="JavaScript1.1">
<!-- hide from old browsers
  function JSVer(){
    return "1.1"
    }
//-->
</SCRIPT>
<SCRIPT Language="JavaScript1.2">
<!-- hide from old browsers
  function JSVer(){
    return "1.2"
    }
//-->
</SCRIPT>
<SCRIPT Language="JavaScript1.3">
<!-- hide from old browsers
  function JSVer(){
    return "1.3"
    }
//-->
</SCRIPT>




<P>Demo illustrating how to determine JavaScript version.<BR>
<SCRIPT Language="JavaScript">
<!-- hide from old browsers
  document.write("<B>Your browser supports JavaScript version " + JSVer() + "</B>")
//-->
</SCRIPT>

</body>
</html>
Avatar billede zeusdk Nybegynder
21. februar 2003 - 20:37 #8
I IE6, hvor det hele tiden har virket, skriver den: 1.3

Og i IE5.0, hvor det ikke virker, skriver den:... (vent jeg skal lige boote)
Avatar billede zeusdk Nybegynder
21. februar 2003 - 20:43 #9
... der skriver den sørme også 1.3
Avatar billede zeusdk Nybegynder
21. februar 2003 - 20:46 #10
Har det nogen betydning, at jeg skriver "<script>" i stedet for "<SCRIPT Language="JavaScript">"?
Avatar billede zeusdk Nybegynder
21. februar 2003 - 20:47 #11
(Altså i scriptet, som får IE5.0 til at gå ned.)
Avatar billede jespernaur Nybegynder
21. februar 2003 - 20:48 #12
Ved ikke, har du prøvet at skrive "<SCRIPT Language="JavaScript">", og er der nogen forskel?
Avatar billede zeusdk Nybegynder
21. februar 2003 - 20:56 #13
Der er umiddelbart ingen forskel, hvad jeg kan se. Har du flere gode bud på en mulige løsninger. Ellers må jeg indsætte kode, som fisker IE5.0-browsere fra? (I så fald sidststående, har du sådan en kode?)
Avatar billede jespernaur Nybegynder
21. februar 2003 - 22:21 #14
Vi må tilsyneladende konstatere, at IE5.5/IE6.0 har en anden RegExP implementation end IE5.0, på trods af at Javascript versionen i alle 3 tilfælde er 1.3. En signifikant forskel er åbenbart, at konstruktionen

    .*?

hvor ? modificerer * til at være 'ikke-grådig', ikke understøttes af IE5.0 (man får i stedet den famøse 'uventet kvantor' fejl).

Mht til test for IE5.0: Du kan prøve at teste nedenstående (navigator.userAgent) i forskellige browsere for at se forskellen, men jeg tror ikke det er videre moderne:

<script language="JavaScript">document.write(navigator.userAgent)</script>
Avatar billede zeusdk Nybegynder
01. marts 2003 - 13:02 #15
Mange tak for hjæpen.

Kan du ikke lige udbygge den kode, som du har udviklet til mig - se her :-)
http://www.eksperten.dk/spm/322735
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