2009-10-26 24 views
5

Estoy buscando una expresión regular que acepte solo valores numéricos y sin espacios. Actualmente estoy usando:.NET Regex, solo numérico, sin espacios

^(0|[1-9][0-9]*)$ 

que funciona muy bien, pero se acepta valores que consisten solamente en los espacios. ¿Qué tiene de malo?

+0

¿El \ d + trabajo? Debe coincidir con una secuencia de uno o más dígitos. – hashable

Respuesta

14

La razón es que * aceptará 0 o más. Una cadena puramente vacía tiene 0 números y, por lo tanto, cumple los requisitos. Necesita 1 o más, use + en su lugar.

^(0|[1-9][0-9]+)$ 

EDITAR

Aquí es Andrews solución más robusta y más simple.

^\d+$ 
+2

+1 ¡Demasiado rápido! :) –

+0

Saludos por la respuesta rápida, sin embargo, todavía pasará una cadena que tiene solo espacios :( –

+1

Su expresión regular sugerida '^ (0 | [1-9] [0-9] +) $' no admite números mayores que cero y menos de diez. –

0

esta expresión regular funciona perfecttly

^\d*[0-9](|.\d*[0-9])?$ 
+1

¿Los decimales no son "solo numéricos, sin espacios"? Siento esto es un voto negativo injusto. Si el autor de la pregunta solo quiere números enteros, sin espacios, el título de la pregunta debe reflejar eso y en este momento me inclino a rechazar la pregunta como resultado. – mrmillsy

Cuestiones relacionadas