2009-04-24 14 views
8

Tengo dos expresiones regulares que validan los valores ingresados.Cómo detectar la longitud exacta en la expresión regular

Uno que permite a cualquier longitud de alfa-numérico de valor:

@"^\s*(?<ALPHA>[A-Z0-9]+)\s*" 

Y sólo el otro permite que los valores numéricos:

@"^\s*(?<NUM>[0-9]{10})" 

¿Cómo puedo obtener una cadena numérica de la longitud de 11 no ser atrapado por el NUM regex.

Respuesta

12

Creo que lo que intenta decir es que no desea permitir más de 10 dígitos. Por lo tanto, solo agregue un $ al final para especificar el final de la expresión regular.

Ejemplo: @"^\s*(?[0-9]{10})$"


aquí está mi respuesta original, pero creo que te leo demasiado exacta.

string myRegexString = `@"(?!(^\d{11}$)` ... your regex here ...)"; 

que lee "mientras que por delante no es, iniciar, 11 dígitos, end"

+0

Gracias eso es lo que estaba buscando ... – CheGueVerra

0

Coincidir algo no numérico después de la longitud de 10 cuerdas. Mi regex-foo no es tan buena, pero creo que la tienes configurada allí para capturar una cadena numérica de longitud exacta 10, pero como no coincides con nada después de eso, una cadena de longitud 11 también coincidiría. Intenta igualar más allá del final del número y estarás bien.

0

¿Podría probar la alternancia?

^\s*(?\d{1,10}|\d{12,}) 
4

Si se trata de una sola línea, se podría especificar que su partido debe suceder al final de la línea, como este en. red ...

^\s*([0-9]{10})\z 

que aceptará 1234567890 pero rechazan 12345678901.

0

Este debe coincidir con sólo 10 dígitos y permitir que un número arbitrario de espacios en blanco antes y después de los dígitos.

para no capturar versión: (sólo los partidos, los dígitos coincidentes no se almacenan)

^\s*(?:\d{10})\s*$ 

versión Captura: (los dígitos coincidentes están disponibles en el subgrupo 1, como $ 1 o \ 1)

^\s*(\d{10})\s*$ 
0

Si usted está tratando de igualar los números que son sólo 10 dígitos de longitud, sólo tiene que añadir un ancla de arrastre usando $, así:

^\s*(?:[0-9]{10})\s*$ 

Eso coincidirá con cualquier número que tenga exactamente 10 dígitos (con espacio opcional en cada lado).

2

¿Quiere decir que quiere hacer coincidir hasta 10 dígitos?Prueba esto:

@"^\s*[0-9]{1,10}\s*$" 
0

var pattern =/\b[0-9]{10}$\b/; 
 

 
// the b modifier is used for boundary and $ is used for exact length

Cuestiones relacionadas