Regex - En rango o cero
Frecuentes
Visto 193 veces
1
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")]
2 Respuestas
3
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
3
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 c# regex or haz tu propia pregunta.
tu pregunta no está clara... ¿Puedes poner un ejemplo? - aleroot
C# tiene operadores para comparar números que son mucho más fáciles de usar que una expresión regular :) - Stilgar
Sí, pero esto se usa en un atributo de validación en el modelo MVC como este: [RegularExpression(@"SomeRegExpression", ErrorMessage = "Min order error")] - Stian
Algunas personas, cuando se enfrentan a un problema, piensan "Lo sé, usaré expresiones regulares". Ahora ellos tienen dos problemas. - David Brabant
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. - Stian