2011-01-13 15 views

Respuesta

69

Utilice esta expresión regular para coincidir sólo diez dígitos:

@"^\d{10}$" 

Para encontrar una secuencia de diez consecutivos dígitos en cualquier parte de una cadena, utilice:

@"\d{10}" 

Tenga en cuenta que esto también se encuentra el primeros 10 dígitos de un número de 11 dígitos. Para buscar en cualquier parte de la cadena para exactamente 10 dígitos consecutivos y no más que puede usar negativo lookarounds:

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

Disculpe por nubiness, pero ¿qué es un "aspecto negativo"? – sova

+1

@sova: Puede leer sobre las afirmaciones de lookaround aquí: http://www.regular-expressions.info/lookaround.html. La expresión significa 10 dígitos sin un dígito antes - '(?

+0

Genial, gracias ... exactamente wat que estaba buscando –

3

Utilice esta:

\d{10} 

espero que ayude.

6

Utilice el siguiente patrón.

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

creo que debería hacerlo

3

Un ejemplo de cómo 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; 
    } 
} 

Podrías haber hecho también de otra manera por ejemplo, usando Match y luego envolviendo un bloque try-catch alrededor de la coincidencia de patrón. Sin embargo, si se da una entrada incorrecta con bastante frecuencia, es bastante costoso lanzar una excepción. Por lo tanto, prefiero la forma anterior, al menos en casos simples.

Cuestiones relacionadas