Originariamente inviato da -MaVeRiK86-
codice:
String|String|int|int|int|String
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.

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?
Se pensavi di fare una unica regex che possa validare anche il range di quei valori, allora no, te lo sconsiglio.

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.