Jeena Paradies: JSLint zufriedenstellen "Bad regular expression"

Hallo,

Ich versuche gerade ein JavaScript JSLint gefügig zu machen. Allerdings bekomme ich diesen Fehler hier, den ich nicht wirklich beheben kann. Vielleicht hat ja einer von euch eine Idee?

Bad regular expression: [^a-z0-9.,_/-]/) != -1) { url = url.replace(/[^a-z0-9.,_/-]/, ""); } line 311, char 21:   ignore all
while(url.search(/[^a-z0-9.,_/-]/) != -1) { url = url.replace(/[^a-z0-9.,_/-]/, "");...
Stopping, unable to continue. (94% scanned) line 311, char 21:   ignore all
while(url.search(/[^a-z0-9.,_/-]/) != -1) { url = url.replace(/[^a-z0-9.,_/-]/, "");...

Jeena

--
<br />
<b>Fatal error</b>:  Class 'Query' not found in <b>/home/jeena/jeenaparadies.net/htdocs/weblog/cforum-remote-signature.php</b> on line <b>28</b><br />
| Jlog | Gourmetica Mentiri
  1. Hallo,

    Ich versuche gerade ein JavaScript JSLint gefügig zu machen. Allerdings bekomme ich diesen Fehler hier, den ich nicht wirklich beheben kann.

    Fehler im JSLint kannst du nicht beheben. Wahrscheinlich stolpert der JSLint darüber, dass in der Zeichenklasse [...] ein unmaskiertes ^ steht, was außerhalb einer Zeichenklasse für Stringanfang steht.

    Vielleicht hat ja einer von euch eine Idee?

    [^] sollte auf dasselbe herauskommen, vielleicht mag das der JSLint.

    Mathias

    1. Hallo,

      [^] sollte auf dasselbe herauskommen, vielleicht mag das der JSLint.

      Hm leider hilft das nicht.

      Jeena

      --
      <br />
      <b>Fatal error</b>:  Class 'Query' not found in <b>/home/jeena/jeenaparadies.net/htdocs/weblog/cforum-remote-signature.php</b> on line <b>28</b><br />
      | Jlog | Gourmetica Mentiri
  2. [latex]Mae  govannen![/latex]

    Ich versuche gerade ein JavaScript JSLint gefügig zu machen. Allerdings bekomme ich diesen Fehler hier, den ich nicht wirklich beheben kann. Vielleicht hat ja einer von euch eine Idee?

    Wenn ich die Zeile

    while(url.search(/[^a-z0-9.,_/-]/) != -1) { url = url.replace(/[^a-z0-9.,_/-]/, "");}
    (schließende Klammer } von mir eingefügt)

    in JSLint eingebe, erhalte ich nur 4 Meldungen, daß jeweils / und - nicht escaped sind.
    Ändere ich das zu while(url.search(/[^a-z0-9.,_\/\-]/) != -1) { url = url.replace(/[^a-z0-9.,_\/\-]/, "");}, meckert JSLint hier nicht mehr. (außer über globale Variable, die ich natürlich durch Verwendung nur dieses Ausschnittes habe)

    (bei meinem Test waren keine Optionen angewählt, bei einem Test mit "recommended Options" bzw. "Good Parts" mit wieder deaktivieretm Whitespace-Check waren zwar Fehler da, aber die haben mit diesem Problem nichts zu tun). Insofern kann ich den Fehler den du hast, nicht nachvollziehen.

    Cü,

    Kai

    --
    Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
    selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
    1. Hi,

      while(url.search(/[^a-z0-9.,_/-]/) != -1) { url = url.replace(/[^a-z0-9.,_/-]/, "");}
      (schließende Klammer } von mir eingefügt)

      in JSLint eingebe, erhalte ich nur 4 Meldungen, daß jeweils / und - nicht escaped sind.

      D.h. JSLint taugt nichts, denn innerhalb der eckigen Klammern muß das - nicht escaped werden; seine Sonderbedeutung hat es NICHT, wenn es als erstes Zeichen (nach einem evtl. vorhandenen ^) oder als letztes Zeichen in der Klasse steht.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. Lieber Jeena,

    Bad regular expression: [^a-z0-9.,_/-]

    ich tippe auf den unmaskierten Slash.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo,

      ich tippe auf den unmaskierten Slash.

      Hilft leider auch nicht.

      Jeena

      --
      <br />
      <b>Fatal error</b>:  Class 'Query' not found in <b>/home/jeena/jeenaparadies.net/htdocs/weblog/cforum-remote-signature.php</b> on line <b>28</b><br />
      | Jlog | Gourmetica Mentiri
  4. Ich versuche gerade ein JavaScript JSLint gefügig zu machen. Allerdings bekomme ich diesen Fehler hier, den ich nicht wirklich beheben kann. Vielleicht hat ja einer von euch eine Idee?

    Der Fehler ist soweit ich das sehe falsch und ist kein Fehler, JSLint, ist ja nur ein Tool, dass offensichtlich noch ein paar makel hat, das ist nicht das erste mal das ich von einem falschen Fehler lese.

    Struppi.

  5. Hallo,

    Hier ist der komplette Quellcode (ein paar nicht initialisierte Variablen kommen direkt aus dem HTML, vor allem wenn sie im Namen _l_ drin haben):

    http://jeenaparadies.net/t/self/jslint-problem.js

    Und zum Thema dass JSLint kaputt sein soll würde ich gerne sagen, dass es ja immerhin aus der Feder von Douglas Crockford (senior JavaScript Architect at Yahoo!), einem astreinen JavaScript-Guru, stammt, und ich ihm schon zutraue ein solches Programm zu schreiben das einem weiterhelfen kann.

    Jeena

    --
    <br />
    <b>Fatal error</b>:  Class 'Query' not found in <b>/home/jeena/jeenaparadies.net/htdocs/weblog/cforum-remote-signature.php</b> on line <b>28</b><br />
    | Jlog | Gourmetica Mentiri
    1. Und zum Thema dass JSLint kaputt sein soll würde ich gerne sagen, dass es ja immerhin aus der Feder von Douglas Crockford (senior JavaScript Architect at Yahoo!), einem astreinen JavaScript-Guru, stammt, und ich ihm schon zutraue ein solches Programm zu schreiben das einem weiterhelfen kann.

      Das ist mir bekannt, trotzdem tauchen, wie schon gesagt, immer mal wieder Ungereimtheiten auf, zumal reguläre Ausdrücke zu parsen eben nicht sonderlich einfach ist. Aber wieso du JSlint brauchst ist mir ein Rätsel. FF zeigt dir doch auch so alle Fehler an. Ich halte den für überflüssig.

      Hast du die Doku gelesen?

      Regular Expressions

      Regular expressions are written in a terse and cryptic notation. JSLint looks for problems that may cause portability problems. It also attempts to resolve visual ambiguities by recommending explicit escapement.

      JavaScript's syntax for regular expression literals overloads the / character. To avoid ambiguity, JSLint expects that the character preceding a regular expression literal is a ( or = or : or , character.

      Aber wie auch immer, die Auswertung von JSLint ist hier definitiv falsch.

      Struppi.

      1. Hallo,

        Das ist mir bekannt, trotzdem tauchen, wie schon gesagt, immer mal wieder Ungereimtheiten auf, zumal reguläre Ausdrücke zu parsen eben nicht sonderlich einfach ist. Aber wieso du JSlint brauchst ist mir ein Rätsel. FF zeigt dir doch auch so alle Fehler an. Ich halte den für überflüssig.

        Nein nein, ich brauche JSLint nicht, ich hab es vor allem dazu benutzt das Script von Fehlern zu bereinigen und es gab mir auch einige gute Tipps, die wohl den Browsern das Parsen einfacher machen.

        Und da auf der Seite steht "JSLint will hurt your feelings" bin ich halt davon ausgegangen dass ich selbst etwas falsch gemacht habe und nicht der Autor von JSLint ;).

        Hast du die Doku gelesen?

        Hm nein, nicht wirklich ...

        Aber wie auch immer, die Auswertung von JSLint ist hier definitiv falsch.

        Ok, vielen Dank. Ich lasse es jetzt erst einmal so wie es jetzt ist.

        Jeena

        --
        <br />
        <b>Fatal error</b>:  Class 'Query' not found in <b>/home/jeena/jeenaparadies.net/htdocs/weblog/cforum-remote-signature.php</b> on line <b>28</b><br />
        | Jlog | Gourmetica Mentiri
        1. Aber wie auch immer, die Auswertung von JSLint ist hier definitiv falsch.
          Ok, vielen Dank. Ich lasse es jetzt erst einmal so wie es jetzt ist.

          Ich hab nochmal mit deinem Ausdruck rumgespielt in JSLint, so wird kein Fehler angezeigt:

          var url = '';  
          url = url.replace(/[^a-z0-9.,_\/\-]/, "");  
          
          

          Was aber Kai auch schon vorschlug.

          Aber das beduetet wie Andreas schon sagte, JSLint taugt nichts.

          Struppi.

          1. [latex]Mae  govannen![/latex]

            Aber das beduetet wie Andreas schon sagte, JSLint taugt nichts.

            Kann man ja DC in seiner JSLint-Yahoo-Group mal verklickern. Mein Englisch reicht dafür leider nicht.

            Cü,

            Kai

            --
            Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
            selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
  6. gruss Jeena,

    ich muss leider Deine gefuehle verletzen - nimm dies hier:

    var url;  
    while (url.search(/[^a-z0-9\.,_\/\-]/) !== -1) {  
      url = url.replace(/[^a-z0-9\.,_\/\-]/, "");  
    }
    

    die unterschiede liegen ...

    while(url.search(/[^a-z0-9.,_/-]/) != -1) {url = url.replace(/[^a-z0-9.,_/-]/, "");}
    ----^---------------------^--^^------^--------------------------------^--^^
    ...hier.............. hier,hier,hier,hier ........................hier,hier+hier
    -----v---------------------v---v-v-------v---------------------------------v---v-v
    while (url.search(/[^a-z0-9\.,_\/\-]/) !== -1) {url = url.replace(/[^a-z0-9\.,_\/\-]/, "");}

    sobald Du nach zeichen suchst, die ausdruecklich auch steuerzeichen
    fuer RegExp(ressions) sind, muessen diese maskiert werden - unter
    anderem dann eben . , / und -

    aber wie schon mehrfach angesprochen; das ist *nur* ein LINT-programm.
    das macht vorschlaege, die man genau an den stellen weiterhin ignorieren
    kann, die sich nicht ueber die optionen unterdruecken liessen.

    ich weiss beispielsweise ganz genau, wann ich bei vergleichen bewusst
    implizites wrapping zulassen will, und wann ich wirklich nicht auf
    identitaet verzichten kann.

    im obigen bsp. wuerde ich uebrigens auf ">= 0" vergleichen.

    so long - peterS. - pseliger@gmx.net

    --
    »Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
    Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
    ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]
    1. sobald Du nach zeichen suchst, die ausdruecklich auch steuerzeichen
      fuer RegExp(ressions) sind, muessen diese maskiert werden - unter
      anderem dann eben . , / und -

      Ich widerspreche dir ungern, aber wie Andreas schon sagte, ist dies in Zeichenklassen nicht nötig.

      Struppi.