¿Cómo se ^\d+$
puede mejorar para no permitir 0
?
EDITAR (hacerlo más concreto):
Ejemplos para permitir:
1
30
111
Ejemplos Para no permitir:
0
00
-22
No importa si se permiten o no números positivos con un cero inicial (p 022
. Ej .).
Esto es para la implementación de Java JDK Regex.
076
,?Respuestas:
Prueba esto:
... y algo de relleno para superar el límite de respuesta de 30 caracteres SO :-).
Aquí está la demostración
fuente
^[1-9]+$
funcionaría?^[1-9]+$
no permitiría 10^[1-9]+$
no lo permitiría10
. @Mulmoth la sugerencia lo permitirá1
, ya que\d*
coincide cero o más veces. Sin embargo, no lo permitirá076
, ya que no comienza con un[1-9]
.01
?Lamento llegar tarde, pero el OP quiere permitir,
076
pero probablemente NO quiera permitir0000000000
.Entonces, en este caso, queremos una cadena de uno o más dígitos que contenga al menos uno distinto de cero . Es decir
fuente
^[0-9]*[1-9][0-9]*(\.[0-9]+)$
pero eso es hacer una suposición sobre lo que quieres decir con "decimal". ¿Necesitas partes de exponentes? Esto es bastante complicado, así que haz otra pregunta.^0*[1-9]\d*$
ya que el primero[0-9]*
está activo solo hasta que[1-9]
encuentra el primero que no sea cero, es decir, está activo solo hasta que haya ceros iniciales (0*
).Puede intentar una afirmación anticipada negativa:
fuente
Pruebe este, este funciona mejor para satisfacer los requisitos.
Aquí está la salida de muestra
fuente
[1-9]\d*
.^\d*[1-9]\d*$
esto puede incluir todos los valores positivos, incluso si está rellenado con cero en la parte delantera
Permite
1
01
10
11 etc.
No permitir
0
00
000 etc.
fuente
Cualquier entero positivo, excluyendo 0:
^\+?[1-9]\d*$
Cualquier entero positivo, incluido 0:
^(0|\+?[1-9]\d*)$
fuente
Tengo este:
¿Alguien lo supera? :)
fuente
00
¿Quieres esto? Y permitirá1aaaaa
yabcd01
.^
pertenece solo a la primera alternativa y$
solo a la segunda, para resolver esto, coloque corchetes alrededor^([1-9]|[0-9]{2,})$
000000000
. Dijiste cualquier número entero excluyendo cero .Solo por diversión, otra alternativa usando lookaheads:
Todos los dígitos que desee, pero al menos uno debe ser
[1-9]
.fuente
Es posible que desee esto (editar: permitir el número del formulario
0123
):sin embargo, si fuera yo, en su lugar haría
fuente
Integer.parseInt()
sí mismo agrega muy poca sobrecarga. Lo que es caro es lanzar y capturar excepciones.\\+?
prefijos? Supongo que se supone que es un signo más de escape como aparecería en el código fuente de Java, pero ¿por qué? Si no se permiten los signos menos, creo que es seguro asumir que los signos más también están desactivados.Esta expresión regular coincide con cualquier entero positivo de 0:
Funciona con dos búsquedas retrospectivas negativas, que buscan un signo menos antes de un número, lo que indica que es un número negativo. También funciona para cualquier número negativo mayor que -9 (por ejemplo, -22).
fuente
Mi patrón es complicado, pero cubre exactamente "Cualquier entero positivo, excluyendo 0" (1 - 2147483647, no largo). Es para números decimales y no permite ceros a la izquierda.
fuente
^ [1-9] * $ es lo más simple que se me ocurre
fuente
10
y29303
. También coincidirá con una cadena vacía.Esto solo debería permitir decimales> 0
fuente