2011-10-23 7 views
17

ho bisogno di un'espressione regolare che convalida per un numero di lunghezza 4, 5, 6espressione regolare per numero con lunghezza di 4, 5 o 6

ho usato^[0-9] {4} per convalidare per un certo numero di 4, ma non so come includere convalida per 5 e 6.

+0

Prova '[0-9] {4,6}' –

+0

Grazie ha risolto il mio problema, si prega di aggiungere come una risposta –

+1

Si deve sempre specificare la lingua in uso dal tuo regex da. Mentre per le regex semplici non potrebbe essere importante, quelle più complesse dipendono dalla lingua di partenza. È anche scritto nel tag. – xanatos

risposta

44

Prova questo:

^[0-9]{4,6}$ 

{4,6} = da 4 a 6 caratteri, compreso.

+1

Ciao, ho bisogno di convalidare solo la lunghezza di 4 o 6. Come posso ottenere questo. Se l'utente dà la lunghezza di 5 numeri. Dovrebbe dare l'errore al pattern. Si prega di aiutare – Hema

1

Se la lingua utilizzata accetta {}, è possibile utilizzare [0-9]{4,6}.

In caso contrario, sarà necessario utilizzare [0-9][0-9][0-9][0-9][0-9]?[0-9]?.

9

Attenzione, come scritto, la soluzione di Peter "accetterà" 0000. Se si desidera convalidare numeri compresi tra 1000 e 999999, allora questo è un altro problema :-)

^[1-9][0-9]{3,5}$ 

ad esempio bloccherà l'inserimento 0 all'inizio della stringa.

Se si desidera accettare 0 padding, ma solo fino a una lunghezza di 6, in modo che 001000 sia valido, diventa più complesso. Se usiamo look-ahead allora possiamo scrivere qualcosa come

^(?=[0-9]{4,6}$)0*[1-9][0-9]{3,}$ 

Questa prima controlla se la stringa è lunga 4-6 (?=[0-9]{4,6}$), poi salta gli 0 0* e la ricerca di un non-zero [1-9] seguito da almeno 3 cifre [0-9]{3,}.

+0

Per quanto riguarda la seconda espressione regolare: '^ (? = [0-9] {4,6} $) 0 * [1-9] [0-9] {3,} $' - The '{3,} 'erroneamente richiede tre cifre oltre il primo' [1-9] ', e quindi non riuscirà ad abbinare numeri come:' 000001' e '0123'. Poiché il tuo lookahead garantisce già il requisito di lunghezza, '{3,}' può essere scritto come una stella '*. (O è questo il comportamento che intendevi?) – ridgerunner

+0

@ridgerunner Come ho scritto, il numero minimo è 1000, quindi 1-9 e tre cifre libere. Quindi è corretto. Queste regex cercano di verificare il valore e non solo la sintassi. – xanatos

6

[0-9]{4,6} può essere accorciato per \d{4,6}

Problemi correlati