Tekstvalidering til målestok
Jeg har i en form at en bruger skal indtaste en målestoksforhold der skal bruges.Jeg har rodet med regulære udtryk for at finde en måde men synes ikke det kan blive kontant og godt nok.
Denne model skal benyttes:
"1" efterfuldt af ingenting eller whitespace (" "), så kolon :, så ingenting eller whitespace og så højden.
Dette er tilladt brugeren:
1: 5000
1 : 5000
1:5000
1 :5000
hvilket er fint nok, men så snart der kommet kolon i bliver det mere besværligt.
Man kan validere slutningen med:
\d{1,3}[.]\d{3}$ => Dette siger fra slutningen af strengen skal der være 3 tal - så et punktum og derefter 1-3 tal igen.
Det er fint MEN hvad så hvis det bliver større endnu?
Den skal jo dynamisk kunne godtage 500.000 men også 5.000.000 uden at godtage 5.50.000.
Der er en minimums og maksimums-skala med her så tænkte man kunne se hvad maximums-længden var. Fx ved 5000000 ville .length være 7.
Man kan så dividere med 3 for at finde antal punktumer der skal indsættes for den kan blive max.
Så kan man indsætte fælgende for at imødekomme de ekstra punktumer:
(\d{1,3}[.])? => som siger der kan komme 1-3 tal efterfuldt af et punktum men kun måske.
Dette giver så problemet når de kommer efter hinanden ved at dette pludseligt bliver acceptabelt for følgende udtryk:
Udtryk:
1\D{0,1}[:]\D{0,1}(\d{1,3}[.])?(\d{1,3}[.])?\d{1,3}[.]\d{3}$
Tal: 1 : 56.1.50.000
Resultat: Dette godkendes da der ikke er regel om at hvis punktum optræder SKAL tallene før være 3.