Autor Zpráva
majo80
Profil *
Zdravím,
potreboval by som zistiť správny formát napísaného telefónneho čísla tak, aby toto číslo spĺňalo nasledovné požiadavky:

- ak sú prvé 4 znaky +421 dĺžka čísla musí mať presne 13 znakov (vrátane znamienka plus)
- ak sú prvé 3 znaky 421 dĺžka čísla musí mať presne 12 znakov
- ak sú prvé 2 znaky 09 dĺžka čísla musí mať presne 10 znakov

Nemusí to byť skontrolované v jednom kroku (jeden reg. výraz) ale kľudne aj v troch po sebe idúcich.

Ďakujem
Kcko
Profil
majo80:
A co máš hotového?
juriad
Profil
\+?421\d{9}|09\d{8}

Dvě alternativy (to říká to svislítko uprostřed):
Něco co začíná nepovinným + a pak 421 a za tím 9 cifer,
nebo 09 a 8 cifer.

Začátek a konec řetězce (metaznaky ^$ si doplň podle potřeby).
_Leopik 2x
Profil *
Tvoj výraz by mohol vyzerať nejako takto
(^\+421\d{9}$|^421\d{9}$|^09\d{8}$)
Prejdu ním výrazy, ktoré začínajú na +421 a sú následované presne 9 číslami alebo 421 a za tým 9 čísel alebo 09 a za tým 8 čísel (ak to číslo bude nejak vyzuálne upravené, napríklad vloženými medzerami, nebude to fungovať).

Dobrý nástroj na testovanie/vytváranie regulárnych vyýrazov je https://regex101.com
Keeehi
Profil
Je dobré odstranit ze vstupu nenumerické znaky a teprve pak ho validovat. Někdo je totiž zvyklý do čísel psát mezery, nějaký Američan ti tam zase bude cpát závorky a pomlčky. A není důvod otravovat uživatele nějakým přesným formátem, když si ho umíme získat sami.
<?php
$rawPhoneNumber // = $_POST["telefon"];
$normalizedPhoneNumber = preg_replace('~\D+~','',$rawPhoneNumber);

if (!preg_match('~^421\d{9}$|^09\d{8}$~', $normalizedPhoneNumber)) {
    echo "Neplatné telefonní číslo";
    exit;
}

// use $normalizedPhoneNumber on next lines

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: