2011-01-13 12 views

Antwort

69

Mit diesem regulären Ausdruck zehn Ziffern nur entsprechen:

@"\d{10}" 

Beachten Sie, dass dies auch die finden:

@"^\d{10}$" 

Um eine Folge von zehn aufeinander folgenden Ziffern überall in einem String, Verwendung finden erste 10 Ziffern einer 11-stelligen Nummer. Um überall in der Zeichenfolge für genau 10 aufeinander folgende Ziffern zu suchen und nicht mehr können Sie mit negativen lookarounds:

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

Sorry für Nubiness, aber was ist ein "negativer Lookaround"? – sova

+1

@sova: Sie können über Lookaround Assertions hier lesen: http://www.regular-expressions.info/lookaround.html. Der Ausdruck bedeutet 10 Ziffern ohne eine Ziffer davor - '(?

+0

Großartig, danke..exactly was ich gesucht habe –

3

Mit diesem:

\d{10} 

Ich hoffe, es hilft.

6

Verwenden Sie das folgende Muster.

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

glaube ich, dass es tun sollten

3

Ein Beispiel, wie es zu implementieren:

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

Sie auch in einer anderen Art und Weise getan haben könnte, beispielsweise durch Verwenden Sie Match und wickeln Sie dann einen try-catch-Block um den Mustervergleich. Wenn jedoch oft eine falsche Eingabe erfolgt, ist es ziemlich teuer, eine Ausnahme auszulösen. Daher bevorzuge ich den obigen Weg, zumindest in einfachen Fällen.