Regulärer Ausdruck - FF Bug?

- javascript
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.
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.
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.
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'
);