Struppi: Regulärer Ausdruck - FF Bug?

  
function word(val) { var r = /[a-zöäü]+/gi; return r.test(val);}  
  
var x = 'blä';  
alert(  
x + ' ist ein Wort: ' + word(x) + '\n' +  
x + ' ist ein Wort: ' + word(x) + '\n'  
)  

Bie mir kommt im FF 2. erst true und false, im IE 7 zweimal true (wie ich es auch erwarte).
Mach ich da was falsch?

Struppi.

  1. Hi,

    function word(val) { var r = /[a-zöäü]+/gi; return r.test(val);}

    var x = 'blä';
    alert(
    x + ' ist ein Wort: ' + word(x) + '\n' +
    x + ' ist ein Wort: ' + word(x) + '\n'
    )

    
    >   
    > Bie mir kommt im FF 2. erst true und false, im IE 7 zweimal true (wie ich es auch erwarte).  
    > Mach ich da was falsch?  
      
    Ich könnte mir folgendes Szenario im FF vorstellen:  
      
    Der erste Aufruf von test findet das gesamte Wort blä (wegen des gierigen +).  
    Beim zweiten Aufruf wird wegen des g nicht von vorne, sondern nach dem ersten Treffer (also am Ende von blä) weitergemacht - danach findet sich aber keines der erlaubten Zeichen mehr.  
      
    Was passiert, wenn Du das g wegläßt?  
    Was passiert, wenn Du statt var r = /[a-zöäü]+/gi; ein new RegExp(...) machst?  
      
    Kleiner Hinweis: die lang im code-Block ohne ""!  
    cu,  
    Andreas
    
    -- 
    [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
    [O o ostern ...](http://ostereier.andreas-waechter.de/)  
      
    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.  
    
    
    1. Ich könnte mir folgendes Szenario im FF vorstellen:

      Der erste Aufruf von test findet das gesamte Wort blä (wegen des gierigen +).
      Beim zweiten Aufruf wird wegen des g nicht von vorne, sondern nach dem ersten Treffer (also am Ende von blä) weitergemacht - danach findet sich aber keines der erlaubten Zeichen mehr.

      Irgendsowas muss es sein.

      Was passiert, wenn Du das g wegläßt?

      oder/und das +

      Was passiert, wenn Du statt var r = /[a-zöäü]+/gi; ein new RegExp(...) machst?

      Es scheint auch so zu funktionieren

      function word(val) { var r = /[^a-zöäü]/i; return !r.test(val);}

      Kleiner Hinweis: die lang im code-Block ohne ""!

      Jaja, wenn sein Helfer Skript nicht hat.

      Struppi.

  2. Bie mir kommt im FF 2. erst true und false, im IE 7 zweimal true (wie ich es auch erwarte).

    Das ist wirklich seltsam: Wenn man es noch öfter ausgibt, kommt immer abwechselnd true und false, sowohl im alten Mozilla 1.6 als auch im FF 2.0.0.7. IE 6 sagt immer true:

      
    function word(val) { var r = /[a-zöäü]+/gi; return r.test(val);}  
      
    var x = 'blä';  
    alert(  
    x + ' ist ein Wort: ' + word(x) + '\n' +  
    x + ' ist ein Wort: ' + word(x) + '\n' +  
    x + ' ist ein Wort: ' + word(x) + '\n' +  
    x + ' ist ein Wort: ' + word(x) + '\n'  
    );