2013-05-15 17 views
5

Sto cercando di fare una regex javascript per abbinare:Regex per numero minimo di 9 numeri

  • richieste: 9 o più numeri.
  • opzionale: trattino, barra in avanti, caratteri più e spazio.
  • vietato: qualsiasi altro carattere

Finora ho

^[0-9-+\/\s]{9,}$ 

L'unico problema di questo (credo) è che conta i caratteri non numerici consentito lungo per raggiungere il minimo 9.

Come posso modificarlo in modo che conti solo i numeri per raggiungere il minimo 9?

+1

quindi, ad esempio, uno ssn 000-11-2222, dove sono 9 cifre, ma 11 caratteri? – hometoast

risposta

7

Se si vuole risolvere questo in un unico RE (non necessariamente raccomandato, ma a volte utile):

^[-+\/\s]*([0-9][-+\/\s]*){9,}$ 

Oppure, se si desidera che il primo e l'ultimo carattere di essere cifre:

^[0-9](^[-+\/\s]*[0-9]){8,}$ 

Cioè: una cifra, seguita da otto o più esecuzioni dei caratteri opzionali, ciascuno che termina con una cifra.

+1

'[- + \/\ s] +' -> non dovrebbe essere '[- + \/\ s] *'? I trattini sono opzionali. – nothrow

+0

@ Yossarian: si. Grazie. –

+0

Si può risparmiare un giorno grazie – Amol

1

^([0-9][-+\/\s]*){9,}$ dovrebbe fare.

+1

Questo non funziona quando il primo carattere non è una cifra, mentre permette di non cifre alla fine. –

3

È possibile utilizzare lookahead per controllare se ci sono 9 o più cifre ovunque

^(?=(\D*\d){9,})[\d/+ -]+$ 
-------------- 
     | 
     |->match further only if there are 9 or more digits anywhere 

O

^([/+ -]*\d){9,}[/+ -]*$ 
+0

+1, ma '\ D' è più bello di' [^ \ d] '. –

+0

@TimPietzcker sì sì signore..grazie per il tuo suggerimento..pensato che il quantificatore 'ans – Anirudha

0

sua semplice con lookahead

Prova questo modello :

^(?=([^\d]*\d){9,})[0-9-+\/\s]*$ 
+1

' {9,} 'alla fine non è necessario.e questo è simile al mio an ..: P – Anirudha

+0

se usi {9,} regex è più veloce di usare +. perché non è necessario controllare look-ahead se è inferiore a 9 caratteri – Civa

+0

No, è più lento. Hai già fatto il controllo della lunghezza nel lookahead. Perché farlo di nuovo? –

Problemi correlati