20. februar 2003 - 21:19Der 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);
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);
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
<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>
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?)
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:
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.