Probleme mit Regexp für input Pattern

  • Ich möchte ein input text für Gleitkommaeingabe erzeugen:

    Code
    <input class="float" type="text" id="breite" name="breite" value="500" pattern="^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$">

    Der Inspector reagiert darauf mit

    Code
    <input pattern='^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$'> kann nicht überprüft werden, da das Muster keine gültige Regexp ist: invalid character in class in regular expression

    Ich kann am Regexp keinen Fehler entdecken. Liegt das an mir oder am Browser?

  • Hallo,

    ein Firefox-Problem ist es jedenfalls keines. Auch Chrome lehnt deinen regulären Ausdruck ab.

    Siehe MDN:

    The pattern's regular expression is compiled with the 'v' flag. This makes the regular expression unicode-aware, and also changes how character classes are interpreted. This allows character class set intersection and subtraction operations, and in addition to ] and \, the following characters must be escaped using a \ backslash if they represent literal characters: (, ), [, {, }, /, -, |.

    Wenn du deinen Ausdruck auf regex101.com eingibst und das v-Flag aktivierst, siehst du, wo die zwei Fehler in deinem Ausdruck sind:

  • Dein Link führt auf eine Version bei der vnicode nicht angeboten wird,. Scheint ja auch ein recht neues Feature zu sein.

    Aber ich habe es auch so begriffen und habe die 'beiden '-' escaped und die Fehlermeldung ist weg.

    Dabei verstehe ich aber nicht, warum das auch für das '-' Zeichen gilt. Das ist doch eigentlich ein ganz normales ASCII Zeichen und in dieser Position auch kein Steuerzeichen. Ist aber auch egal.

    Jedenfalls vielen Dank für die schnelle Hilfe.

    Unter Smalltalk verstehe ich eigentlich etwas anderes.

    Das Thema ist damit erledigt. Wo muss man das anklicken?

  • Dein Link führt auf eine Version bei der vnicode nicht angeboten wird

    Man muss zuvor links den „Flavor“ auf ECMAScript stellen. Standardmäßig ist PHP ausgewählt, was in deinem Fall nicht relevant ist. Das wird nicht in der URL abgebildet, daher war das über meinen Link nicht direkt vorausgewählt.

    Dabei verstehe ich aber nicht, warum das auch für das '-' Zeichen gilt. Das ist doch eigentlich ein ganz normales ASCII Zeichen und in dieser Position auch kein Steuerzeichen.

    Das wurde in der zitierten Passage der MDN web docs erklärt.

    Unter Smalltalk verstehe ich eigentlich etwas anderes.

    Der reguläre Ausdruck war fehlerhaft. Das hätte in keinem Browser so funktioniert, die Frage hatte demnach mit Firefox nichts zu tun. In diesem Sinne ist es kein Support-Thema zu Firefox und alles, was kein Support-Thema zu Firefox ist, ist hier „Smalltalk“.

    Das Thema ist damit erledigt. Wo muss man das anklicken?

    Im Support-Bereich hätte es oben im Thema eine Checkbox gegeben, auf die man doppelt hätte klicken können. Nachdem sich das Thema aber nicht mehr im Support-Bereich befindet, gibt es hier keine entsprechende Markierung. Es ist nichts weiter zu tun.