regexp - probar expresiones regulares
Necesita una expresión regular para hacer coincidir una cadena de números de longitud variable que no pueden ser todos ceros (4)
(?! 0 + $) es una directiva de búsqueda anticipada. Los ?! es el comando lookahead negativo para buscar 1 o más 0 hasta el final de la cadena. Si eso coincide, entonces los caracteres se consumen, dejando la búsqueda de dígitos regulares de / d {1,19}.
Boost Perl Regexp tiene una buena discusión sobre perl regexp como lo reconoce Boost.
Necesito validar una entrada en un formulario. Estoy esperando que la entrada sea un número entre 1 y 19 dígitos. La entrada también puede comenzar con ceros. Sin embargo, quiero validar que no son todos ceros. Tengo una expresión regular que garantizará que la entrada sea numérica y entre 1 y 19 números.
^/d[1,19]$
Pero no puedo encontrar la forma de incluir un cheque que indique que toda la cadena no es todo ceros. Intenté esto
^(![0]{1,19})(/d[1,19])$
pero falla en 0000000000000000001 porque permite una cantidad variable de ceros.
¿Cómo compruebo que toda la cadena NO tiene ceros?
Gracias.
Estoy tratando de hacer esto en un ASP.NET RegularExpressionValidator, así que esperaba una sola expresión. Tengo otras opciones, así que no estoy de suerte si esto no se puede hacer.
Solo haz una búsqueda negativa:
(?!^0+$)(^/d{1,19})
Esto funciona bien en Perl.
no necesitas RegEx para eso
ulong test;
string number = "1234567890123456789";
if (ulong.TryParse(number, out test) && (test < 9999999999999999999ul) && (test > 0))
Console.WriteLine(test);
^(?!0+$)/d{1,19}$