Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Espressioni regolari

  1. #1

    Espressioni regolari

    Ciao ragazzi, mi sono appena affacciato al mondo delle espressioni regolari e sto cercando di scriverne una molto semplice per richiamarla con la preg_match in php ma c'è qualcosa che non và. potete aiutarmi a capire ? grazie

    $formato_mail='/^([A-Za-z0-9._-])\@([A-Za-z0-9._-])\.([A-Za-z0-9._-]{2-4})$/';

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Mi si è rotta la sfera di cristallo, potresti dirmi che problema ti da?

  3. #3
    Perdona la mancanza di info più dettagliate...

    praticamente richiamandola con

    if (preg_match($formato_mail,$mail))
    echo "Formato corretto";
    else echo "Formato errato";

    Mi restituisce sempre formato errato sia che $mail sia un indirizzo semanticamente corretto sia che sia errato.

    Avevo da poco anche aggiunto il controllo sulle occorrenze del nome e del dominio

    $formato_mail='/^([A-Za-z0-9]{1,})\@([A-Za-z0-9]{1,})\.([A-Za-z0-9]{2-4})$/';

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Perché metti \ davanti alla chiocciola?
    Non serve, non è un carattere che necessita escape.

  5. #5

    [RISOLTO]

    Ok, allora ho trovato l'errore.
    sull'ultima graffa avevo scritto {2-4} invece di {2,4}
    Grazie cmq e la prossima volta sarò più dettagliato nella spiegazione

    $formato_mail='/^([A-Za-z0-9]{1,})\@([A-Za-z0-9]{1,})\.([A-Za-z0-9]{2,4})$/';

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Altra cosa {1,} equivale a +
    Metti +, quando avrai preso confidenza con le espressioni regolari lo troverai molto più comodo ed intuitivo.

  7. #7
    ok quindi il + significa che ci deve essere almeno una occorrenza giusto, quindi almeno un carattere.
    Invece l'ultima graffa deve restare così perchè è un range , giusto ?

    $formato_mail='/^([A-Za-z0-9]+)\@([A-Za-z0-9]+)\.([A-Za-z0-9]{2,4})$/';

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sì, giusto.

    Ad ogni modo, il formato corretto per le email è molto complesso, se cerchi in giro ci sono una miriade di espressioni regolari una diversa dall'altra per riconoscere un'email e molte si perdono qualcosa.
    Tempo fa lessi un articolo sul formato degli indirizzi email e secondo lo standard sono accettabili anche indirizzi veramente strani, le regole sono molto meno restrittive di quanto siamo soliti pensare o di quanto venga detto dai provider che ci forniscono le caselle email.
    Tutte quelle restrizioni che vengono introdotte sono solo per facilitarsi il lavoro, ma non è detto che tutti i provider le impongano.

    Quell'articolo non sono riuscito a ritrovarlo, ma già solo andando su Wiki puoi vedere che indirizzi strani è possibile creare e che la tua regola (così come molte altre in giro), riterrebbe non validi.

    http://en.wikipedia.org/wiki/Email_address#Examples

  9. #9
    Grazie per la segnalazione, in effetti ci sono una marea di sintassi che avrei considerato sconosciute, ci darò un occhiata nel momento in cui dovrò eseguire una funzione più consistente.
    Ti volevo fare solo un ultima domanda già che ci sono.
    Sto facendo un'altra funzione per controllare la complessità della password.
    Se devo stabilire un minimo di caratteri che la password deve avere, posso scrivere {6,} ad esempio per stabilire che la password deve avere 12 caratteri giusto ?
    E se volessi impostare un range posso scrivere {6,12} ?

    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.