Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Regulärer Ausdruck, Fehler bei 0 als letzte Zahl hinter dem Komma

  • bambam
  • bambam's Avatar Topic Author
  • Offline
  • Silver Donor
  • Silver Donor
More
3 years 3 months ago - 3 years 3 months ago #209704 by bambam
Hallo zusammen,

ich nutze die LS-Version 3.24.1+201014

Um in einem Zahlenfeld die Eingaben mit zwei Nachkommastellen zu validieren habe ich folgenden regex genommen:

Bei der Frage-Validierungsgleichung:
is_empty(self) OR regexMatch('/^[0-9]+(\.[0-9][0-9])$/',self)

Bei Frage-Validierungshinweis:
{if(is_empty(self) OR regexMatch('/^[0-9]+(\.[0-9][0-9])$/',self) ,"Eingabe mit 2 Dezimalstellen (z.B. 456,78)","Eingabe mit 2 Dezimalstellen (z.B. 456,78)")}


Unter Textelemente habe ich beim Dezimaltrennzeichen das Komma ausgewählt.

Nun das Problem:

Bei einer Eingabe von 22,22 oder 22,01 geht es Einwandfrei, habe ich aber am Ende eine Null stehen, z.B. 22,00 wird der Validierungshinweis als falsch/Rot ausgegeben.

Ich habe auch schon viel gesucht, finde aber keine Lösung, warum das so ist.
Hier: Forum Limesurvey gab es von Joffm bereits einen sehr guten Hinweis den ich übernommen habe, der Validierungshinweis wird aber wieder als falsch/Rot ausgegeben.

Hat jemand dazu eine Idee? Ich bin inzwischen ratlos, habe auch schon viel probiert.

Vielen Dank!



File Attachment:

File Name: regex.lss
File Size:17 KB
Last edit: 3 years 3 months ago by bambam.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 3 months ago #209706 by Joffm
Hallo, bambam,

Ich bin inzwischen ratlos, habe auch schon viel probiert.

Aber verraten, was Du sonst noch ausprobiert hast, willst Du nicht?

Okay,
1. Du hast eine Zahleingabe als Fragetyp genommen; da wird bei einer ",00" natürlich zunächst einmal dieser für den Zahlwert irrelevante Teil entfernt.
Bei solchen Problemen sollte man immer schauen, was in der Datenbank gespeichert wird.
Studie aktivieren, eingeben, gucken.
Dann siehst Du dies auch:

Rechts ist die Frage vom Typ "Zahleingabe; es wurde "14,00" eingegeben.

Also, was machst Du? Du änderst den Fragetyp in "kurzer Text", nimmst in der Expression auch das Komma.


2. Zusätzlich ist es natürlich überflüssig, eine identische Meldung auszugeben; hier ist die Bedingung unsinnig.
Einfach "Bitte Zahlen mit zwei Kommastellen" reicht.
Bei Fehler ist sie rot, sonst grün.
Die Bedingung wäre dann interessant, wenn Du zwei verschiedene Meldungen anzeigen willst, oder gar nichts, solange alles in Ordnung ist.





Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • bambam
  • bambam's Avatar Topic Author
  • Offline
  • Silver Donor
  • Silver Donor
More
3 years 3 months ago #209708 by bambam
Hallo Joffm,

Joffm wrote: Aber verraten, was Du sonst noch ausprobiert hast, willst Du nicht?

Zuletzt hatte ich mich im Regulären Ausdruck verrannt.
Ein kurzes Textfeld hatte ich auch, allerdings dann nicht mehr im Ausdruck auf das Komma anstatt den Punkt geachtet.
Wobei, doch, probiert ja, aber dann hatte ich wohl zusätzlich den Fehler gemacht, bei dem Textfeld unter Sonstiges "Nur Zahlen" zu aktivieren, was ja, bedingt durch die Datenbank, den Fehler natürlich wieder zeigte.

Joffm wrote: 2. Zusätzlich ist es natürlich überflüssig, eine identische Meldung auszugeben; hier ist die Bedingung unsinnig.
Einfach "Bitte Zahlen mit zwei Kommastellen" reicht.
Bei Fehler ist sie rot, sonst grün.
Die Bedingung wäre dann interessant, wenn Du zwei verschiedene Meldungen anzeigen willst, oder gar nichts, solange alles in Ordnung ist.

Hmm, bei mir kam dann nur ein Rotes Ausrufezeichen ohne Text wenn das letzte leer war, daher habe ich beide gleichgesetzt.

Super, das Du meinen Fehler so schnell gefunden und Klasse erklärt hast woran es lag, in die Richtung hätte ich irgendwie nicht gesucht.

Danke!
The topic has been locked.
Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose