2011-01-13 13 views

risposta

69

Utilizzare questa espressione regolare per abbinare solo dieci cifre:

@"^\d{10}$" 

Per trovare una sequenza di dieci consecutivi cifre in qualsiasi punto di una stringa, uso:

@"\d{10}" 

Si noti che questo sarà anche trovare le prime 10 cifre di un numero di 11 cifre. Per cercare in qualsiasi punto della stringa per esattamente 10 cifre consecutive e non più si può usare negativo lookarounds:

@"(?<!\d)\d{10}(?!\d)" 
+0

Ci scusiamo per la nudità, ma che cos'è un "rimedio negativo"? – sova

+1

@sova: puoi leggere le asserzioni di lookaround qui: http://www.regular-expressions.info/lookaround.html. L'espressione significa 10 cifre senza una cifra prima - '(?

+0

Grande, grazie ... esattamente che stavo cercando –

3

Utilizzare questa:

\d{10} 

spero che aiuta.

6

Utilizzare il seguente schema.

^\d{10}$ 
3
\d{10} 

credo che dovrebbe farlo

3

Un esempio di come implementarlo:

public bool ValidateSocialSecNumber(string socialSecNumber) 
{ 
    //Accepts only 10 digits, no more no less. (Like Mike's answer) 
    Regex pattern = new Regex(@"(?<!\d)\d{10}(?!\d)"); 

    if(pattern.isMatch(socialSecNumber)) 
    { 
     //Do something 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

avresti potuto fare anche in un altro modo per esempio utilizzando Match e quindi avvolgendo un blocco try-catch attorno alla corrispondenza del modello. Tuttavia, se un input sbagliato viene dato abbastanza spesso, è piuttosto costoso lanciare un'eccezione. Quindi, preferisco la via sopra, almeno in casi semplici.

Problemi correlati