Regex - En rango o cero

Necesito un RegEx para verificar si el recuento de pedidos de artículos es 0 o está entre 2500 y 999999. ¿Es esto posible de hacer?

Ejemplo: puede pedir 0 (sin artículos) o tiene que hacer un pedido de 2500 o más artículos.

Actualizar: Este debe ser un RegEx porque se usará en un atributo de validación en MVC.

[RegularExpression(@"SomeRegExpression", ErrorMessage = "Min order error")]

preguntado el 22 de mayo de 12 a las 09:05

tu pregunta no está clara... ¿Puedes poner un ejemplo? -

C# tiene operadores para comparar números que son mucho más fáciles de usar que una expresión regular :) -

Sí, pero esto se usa en un atributo de validación en el modelo MVC como este: [RegularExpression(@"SomeRegExpression", ErrorMessage = "Min order error")] -

Algunas personas, cuando se enfrentan a un problema, piensan "Lo sé, usaré expresiones regulares". Ahora ellos tienen dos problemas. -

Por supuesto, me gustaría usar [Range(2500, int.MaxValue, ErrorMessage = "Debe pedir un mínimo de {1} de Item1")], pero esto no permitirá cero. -

2 Respuestas

Si tiene que ser una expresión regular:

^(?:0|\d{5,6}|2[5-9]\d\d|[3-9]\d\d\d)$

Explicación:

^                # Start of string
(?:              # Either match...
 0               # 0
|                # or
 \d{5,6}         # a five- or six-digit number
|                # or
 2[5-9]\d\d      # 2500-2999
|                # or
 [3-9]\d\d\d     # 3000-9999
)                # End of alternation
$                # End of string

contestado el 22 de mayo de 12 a las 09:05

¡Guau, eso es simplemente genial! Gracias por la explicación :) ¿Hay alguna manera de decir que debe estar por encima de 2500 sin un valor máximo? (Puedo controlar esto yo mismo en la entrada de texto). - Stian

@Stian: Reemplazar \d{5,6} by \d{5,}. Esto reemplaza "número de cinco o seis dígitos" con "número de al menos cinco dígitos". - Heinzi

También puede escribir su propio atributo de validación personalizado.

Vea Cómo crear un atributo de validación personalizado para MVC y/o http://www.codeproject.com/Articles/301022/Creating-Custom-Validation-Attribute-in-MVC-3 por ejemplo.

Por ejemplo;

public class CustomValidationAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        int number = value as int;
        return (number == 0 || (number >= 2500 && number <= 999999));
    }
}

contestado el 23 de mayo de 17 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.