Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    434

    Problema espressione regolare

    Ciao, uso la seguente riga per verificare alcuni dati:

    preg_match('/^[a-z0-9\-\._\(\)\[\]\:\/\\\\]{3,50}$/i', $data['name'])

    in $data['name'] c'è:

    Archivio 31/07/2008 14:43:17 (1 articoli)

    eppure mi dice che la stringa non passa il test con l'espressione regolare. Dove sbaglio?

  2. #2

    Re: Problema espressione regolare

    Originariamente inviato da billo
    preg_match('/^[a-z0-9\-\._\(\)\[\]\:\/\\\\]{3,50}$/i', $data['name'])
    Scusa, io non sono un esperto quindi potrei sbagliare, ma perché c'è un _ da solo? Ha un signifcato particolare?
    E poi perché fai \\\\ alla fine del range di caratteri? ne bastano due per indicare \

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    434
    Beh il _ sta da solo perchè nelle espressioni regolari non è significativo e quindi non ha bisogno di escape, i \\\\ alla fine servono perchè se ne metto uno solo mi escapa il ] finale che non dev'essere escapato, se ne metto due idem perchè un escape fa da escape all'altro quindi ne devo mettere quattro per ottenere due escape in modo che non venga toccato il ].

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Archivio ha la A maiuscola e tu come valori possibili hai messo solo a-z


    vedi se e' quello

  5. #5
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573
    Originariamente inviato da andreamk
    Archivio ha la A maiuscola e tu come valori possibili hai messo solo a-z


    vedi se e' quello
    è settato il modificatore di criterio "i" quindi diventa case insensitive.

    ma esattamente che formato devi validare?
    perchè, non sono un espertone, ma da come l'hai scritta la PCRE non passa perchè tu vuoi che ogni carattere sia presente almeno da 3 a 50 volte.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    434
    cioè spiegami ogni carattere da 3 a 50 volte? come devo fare in modo che posso solo accettare quei caratteri che variano da 3 a 50 caratteri?

    [edit] ho provato a togliere la parte sulla lunghezza ma mi da errore lo stesso..

  7. #7
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Nell'espressione regolare non c'è il carattere di spazio, dovrebbe essere quello.

    Prova questa espressione regolare, mettendo lo spazio alla fine della classe di caratteri credo potresti semplificare anche l'escape del carattere \
    Inoltre i due punti da soli non sono un metacarattere quindi non dovrebbero richiedere l'escape

    /^[a-z0-9\-\._\(\)\[\]:\/\\\ ]{3,50}$/i
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    434
    grazie mille Sky, funziona!!! Mi chiedo come abbia fatto a non pensare allo spazio... Grazie ancora!

  9. #9
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Figurati
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

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.