Con la tua espressione regolare non prende i codici come ad esempio a1a...
Credo di essere riuscito a corrgeere la mia:
Spiegazoinecodice:^(?=[a-zA-Z\%][a-zA-Z0-9\%]{2,5}$)(?=.*[0-9].*)
^ 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:EsempioQuindi l'espressione regolare trova tutti gli inizi di stringa ^ seguiti dal contenuto della prima volta che trovi questo segno e dal contenuto della seconda
Trova tutte le a seguite da un numero.codice:a(?=[0-9])
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)