Сопоставьте строку «Двойной, Двойной, Двойной, Двойной» - PullRequest
0 голосов
/ 09 сентября 2018

Я хочу сопоставить строку «Double, Double, Double, Double» с помощью регулярного выражения (для проверки правильности BorderThickness в приложении WPF)

Я нашел много похожих ответов на стеке потока, но ни один из них не работал для меня.

Я нашел [0-9]{4},[0-9]{4} на этой странице , но она не работает, потому что мне нужно - + , . символов в строке.

Это мой код:

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

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

Пример входной строки:

-1.4,2.75,0,10

Примечание: Это не дубликат, мне нужно 4 двойных числа, разделенных запятыми, которые не совпадают с " Регулярное выражение для проверки диапазона двойных чисел "

Скажите, пожалуйста, как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 09 сентября 2018

Чтобы ответить на ваш вопрос, вы можете использовать следующее RegEx:

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

Это будет соответствовать: число, начинающееся / не начинающееся с + или -, за которым следуют одна или несколько цифр, необязательный . (точка), за которым следуют ноль или более цифр, оканчивающиеся на , (запятая). Это повторяется 3 раза и в четвертый раз не заканчивается запятой. Это соответствует вашему примеру.

0 голосов
/ 09 сентября 2018

Вам просто нужно найти регулярное выражение для одного двойника, а затем повторить его 4 раза с , в качестве разделителя:

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

, где x - шаблон для 1 двойного.

Из этого поста шаблон для одного дубля:

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

Таким образом, все регулярное выражение будет:

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

Демо

0 голосов
/ 09 сентября 2018
(([\+\-]\s?)?\d+(\.\d+)?,){3}([\+\-]\s?)?\d+(\.\d+)?

Если я правильно понял, вы хотите найти любую последовательность: Это может начинаться или не начинаться с оператора + or -, который может иметь или не иметь пробел после оператора (если он есть). Затем последовательность из 1 или более чисел, за которыми может следовать или не следовать литерал . и одно или несколько чисел. Все это 4 раза. И первые три все заканчиваются литералом ,.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...