Vizsgálatot végeznék a percre. User megadja a percet, de szeretném leellenőrizni hogy jól adta-e meg. Bonyolítja a dolgot hogy a perc ugye lehet egyjegyű, 17:5 vagy kétjegyű 17:05, de az óra szintén ugyanez. 5:22 vagy 05:22
A feldolgozás miatt nekem kétjegyű szám kell. perc esetén gondoltam erre, de nem igazán jó.
printf "Add meg a percet (0-59): "
read minute
regex="(^[+]?[0-9]|1[0-9]|5[0-9])\b"
if [[ ${minute} =~ ${regex} ]]; then
if [[ ! -z ${minute} ]]; then
minute="$(printf "%02d" $((10#${minute})))"
fi
echo "A perc jó: ${minute}"
else
echo "A perc nem jó: ${minute}"
fi
Ha itt a perc mondjuk 5, akkor az eredmény 05 lesz. Ha 05-öt írok be, akkor nem lesz jó. Nézegettem ezt is: https://regex101.com/r/dU5qB5/1
De még nem jöttem rá.
Hozzászólások
Szerintm [0-5]?[0-9]
Szerk.: már, ha a kérdőjel azt jelenti, amire gondolok: [0-5]{,1}[0-9]
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
A + jelet nem értem az elején, minek kell(het) neked…
Én eddig jutottam. Beleírtam minden ellenőrzést, ami eszembe jutott, hogy probléma lehet:
Egyébként szerintem ez az eredeti regex
a következőt fogadja el: +0..+9 vagy 0..9 vagy 10..19 vagy 50..59. A 20..49 tartomány hiányzik, és a plusz jelet is csak egy számjegy elé fogadja el (de oda is minek kellene plusz jel?).
A soreleje direkt van belevéve a capture group-ba?
^[0-5]?[0-9]\:[0-5]?[0-9]$
[0-5]? => 0,1,2,3,4,5 (? = vagy nincs ott)
[0-9] => 0,1,2,3,4,5,6,8,9
tehát elfogadja azt hogy:
59:59
meg azt is hogy 9:59
vagy hogy 9:9 vagy hogy 09:09