Se pensavi di fare una unica regex che possa validare anche il range di quei valori, allora no, te lo sconsiglio.Originariamente inviato da -MaVeRiK86-
Le prime tre stringhe partendo da sinistra e l'ultima potrebbero essere composte da lettere(maiuscole/minuscole), numeri e possibili spazi (anche doppi) sia all'interno che all'inizio e alla fine e tabulazioni.codice:String|String|int|int|int|String
il primo intero non ha vincoli, può essere qulunque numero positivo, 0 compreso
il secondo intero dovrebbe essere compreso fra 1900 e 2100 (inclusi)
il terzo intero dovrebbe essere compreso fra 0 e 1000 (inclusi)
I controlli sui valori degli interi è trascurabile, più comodo, ma trascurabile se complica troppo la stesura dell'espressione.
Qualcuno sarebbe cosi gentile da aiutarmi a scriverla?
Le regex trattano caratteri ... non valori numerici. Pertanto fare una regex che possa validare anche quei range particolari diventerebbe molto complesso e fumoso.
Tanto per darti una idea: per validare una stringa che contiene un numero da 0 a 255, la regex dovrebbe essere:
1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]
Proprio perché tratta sequenze di caratteri ... non "sa" nulla di valori numerici e quindi bisogna fare i vari casi delle possibili sequenze e range.
Se vuoi puoi validare "blandamente" quei valori numerici (es. per 1900-2100 verificare che ci siano sempre 4 digit) ma poi devi parsare il valore con parseInt() di Integer e verificare il range. E questo vuol dire che devi estrarre dei "gruppi" e quindi devi usare Pattern/Matcher ... non un semplice matches() di String.
Se ti va bene così, ok puoi fare una regex unica.