Quiero hacer coincidir una cadena "Doble, Doble, Doble, Doble" con expresión regular (para verificar la validación de BorderThickness en una aplicación WPF)

Encontré muchas respuestas similares en el stackoverflow, pero ninguna de ellas no funcionó para mí.

Encontré [0-9]{4},[0-9]{4} en esta página, pero no funciona porque necesito - + , . caracteres en la cadena.

Este es mi código:

private static readonly Regex _regex = new Regex("[0-9]{4},[0-9]{4}"); 

public static bool TextIsThickness(string text)
{
    return !_regex.IsMatch(text);
}

Ejemplo de cadena de entrada:

-1.4,2.75,0,10

Nota: esto no es duplicado, necesito 4 números dobles separados por comas que no son lo mismo que "Expresión regular para la validación de rango de número doble"

Por favor dime como puedo hacerlo?

-1
mitli 9 sep. 2018 a las 13:46

3 respuestas

La mejor respuesta

Solo necesita encontrar una expresión regular para un doble, luego repítala 4 veces con , como separador:

^(?:x,){3}x$

Donde x es el patrón para 1 doble.

De esta publicación, el patrón para un doble es:

[+-]?([0-9]*[.])?[0-9]+

Entonces toda la expresión regular será:

^(?:[+-]?([0-9]*[.])?[0-9]+,){3}[+-]?([0-9]*[.])?[0-9]+$

Demo

1
Sweeper 9 sep. 2018 a las 11:36

Para responder a su pregunta, puede usar el siguiente RegEx:

(?:[+-]?\d+\.?\d*,){3}(?:[+-]?\d+\.?\d*)

Coincidirá con: un número que comienza / no comienza con + o - seguido de uno o más dígitos, un . (punto) opcional seguido de cero o más dígitos que terminan con un , ( coma). Esto se repite 3 veces y la cuarta vez no termina con una coma. Esto coincide con tu ejemplo.

0
Poul Bak 9 sep. 2018 a las 11:04
(([\+\-]\s?)?\d+(\.\d+)?,){3}([\+\-]\s?)?\d+(\.\d+)?

Si entendí correctamente, quieres encontrar cualquier secuencia: Eso puede o no comenzar con el operador + or -, que puede tener o no un espacio en blanco después del operador (si hay uno). Luego, una secuencia de 1 o más números, que puede ser seguida o no por un literal ., y uno o más números. Todo eso 4 veces. Y los tres primeros terminan con un literal ,.

0
rnarcos 9 sep. 2018 a las 11:14