Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    49

    Espressioni regolari e controlli

    Ciao a tutti, ho a che fare con una espressione regolare per controllare se un eventuale nickname risponde a determinate specifiche. In particolare esso deve contenere solo caratteri alfanumerici oppure il simbolo % ed essere lungo da 3 a 6 caratteri. Fin qui ho scritto una espressione del tipo
    codice:
    ^[a-zA-Z0-9\%]{3,6}$
    .
    Vi sono delle altre caratteristiche da rispettare per il nickname, ovvero:
    1. deve iniziare con un carattere alfabetico o %
    2. deve contenere almeno un carattere numerico ed uno non numerico.

    Come posso modificare l'espressione che ho scritto? Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    ^[a-zA-Z\%][a-zA-Z0-9\%]{2, 5}$
    No

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    49
    Grazie mille per l'aiutino

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da tampertools Visualizza il messaggio
    ^[a-zA-Z\%][a-zA-Z0-9\%]{2, 5}$
    Non rispetta questa richiesta

    2. deve contenere almeno un carattere numerico ed uno non numerico.

    accetta anche la stringa aaa

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Ups

    Forse questa
    codice:
    ^(?=[a-zA-Z\%][a-zA-Z0-9\%]{2,5})(?=.*[0-9].*)$

    Cwk, vuoi che te la spieghi?
    No

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    49
    Stavo facendo infatti proprio dei test adesso. Anche se non conteneva numeri rispettava sempre l'espressione regolare. Beh in effetti così non è che mi è tanto chiara. Il "punto interrogativo" sta ad indicare la presenza del carattere zero oppure una volta mentre "l'asterisco" indica zero o più occorrenze. Combinati così non ho capito molto.

    Però avevo provato a scriverla così:

    codice:
    ^([a-zA-Z\%][a-zA-Z0-9\%]{2,5})[0-9]+$
    Forse è più semplice, ma non so se corretta.
    Ultima modifica di cwk28; 18-06-2014 a 15:40

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    49
    Quote Originariamente inviata da tampertools Visualizza il messaggio
    Ups

    Forse questa
    codice:
    ^(?=[a-zA-Z\%][a-zA-Z0-9\%]{2,5})(?=.*[0-9].*)$

    Cwk, vuoi che te la spieghi?
    Ho provato ad utilizzarla ma non funziona ...ogni test restituisce falso

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Con la tua espressione regolare non prende i codici come ad esempio a1a...

    Credo di essere riuscito a corrgeere la mia:
    codice:
    ^(?=[a-zA-Z\%][a-zA-Z0-9\%]{2,5}$)(?=.*[0-9].*)
    Spiegazoine
    ^ Inizio dell'espressione regolare
    (?=...) (Forse la parte che hai capito di meno)
    In questo caso il punto interrogativo non vuol dire "zero o una volta".
    Vuole dire che quello che c'è prima deve essere seguito da ciò che c'è dopo l'uguale:
    Esempio
    codice:
    a(?=[0-9])
    Trova tutte le a seguite da un numero.
    Quindi l'espressione regolare trova tutti gli inizi di stringa ^ seguiti dal contenuto della prima volta che trovi questo segno e dal contenuto della seconda

    Simile a questo è (?!...) che vuole dire "tutto ciò che c'è prima che non sia seguito da ciò che c'è dopo il punto esclamativo
    [a-zA-Z\%] I caratteri maiuscoli e minuscoli dalla a alla z e il simbolo %
    [a-zA-Z0-9\%] I caratteri maiuscoli e minuscoli dalla a alla z, le cifre da 1 a 9 e il simbolo %
    {2,5} La "cosa" di prima deve essere ripetuta tra le due e le cinque volte (non {3,6} perché la prima volta era già stata cercata, senza numeri)
    $ Fine della stringa
    .* Qualsiasi cosa
    [0-9] Una cifra da 0 a 9

    Quindi l'espressione regolare cerca una stringa il cui primo carattere sia una lettera o il simbolo % e che abbia altri due,tre,quattro o cinque caratteri che siano una lettera, un numero o il % (prima parte). La stringa deve anche contenere un numero (seconda parte)
    No

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    49
    Con una spiegazione così, non si può non capire. Grazie mille ancora

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.