2011-01-13 10 views

Odpowiedz

69

Użyj tego wyrażenia regularnego, aby dopasować dziesięć cyfr tylko:

@"^\d{10}$" 

Aby znaleźć sekwencję dziesięć kolejnych cyfr w dowolnym miejscu łańcucha, przeznaczenie:

@"\d{10}" 

Należy pamiętać, że będzie to również znaleźć pierwsze 10 cyfr z 11-cyfrowej liczby. Aby wyszukać w dowolnym miejscu łańcucha dla dokładnie 10 kolejnych cyfr i nie można użyć bardziej negatywny lookarounds:

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

Przepraszamy za niedogodność, ale co to jest "negatywne spojrzenie"? – sova

+1

@sova: Możesz przeczytać o stwierdzeniach lookaround tutaj: http://www.regular-expressions.info/lookaround.html. Wyrażenie oznacza 10 cyfr bez cyfry przed - '(?

+0

Świetnie, dzięki .. dokładnie wat, którego szukałem –

3

użyj:

\d{10} 

Mam nadzieję, że to pomaga.

6

Użyj następującego wzoru.

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

Uważam, że powinien to zrobić

3

przykładem, jak je zaimplementować:

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; 
    } 
} 

Mogłeś również zrobić to w inny sposób, na przykład przy użyciu Match, a następnie zawijanie bloku try-catch wokół dopasowania do wzorca. Jednak jeśli błędne dane wejściowe są podawane dość często, wydawanie wyjątków jest dość kosztowne. Dlatego wolę powyższy sposób, przynajmniej w prostych przypadkach.

Powiązane problemy