Подтвердить что ты не робот

Список регулярных выражений для запятых

Что такое регулярное выражение для проверки списка с разделителями-запятыми, как этот:

12365, 45236, 458, 1, 99996332, ......
4b9b3361

Ответ 1

Я предлагаю вам сделать следующее:

(\d+)(,\s*\d+)*

который будет работать для списка, содержащего 1 или более элементов.

Ответ 2

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

(.+?)(?:,|$)

Если вы просто замените запятую чем-то другим, она должна работать для любого разделителя.

Ответ 3

Это зависит от ваших точных требований. Я предполагаю: все числа, любая длина, числа не могут иметь начальные нули и не содержать запятых или десятичных точек. отдельные числа всегда разделяются запятой, а затем пробелом, а последнее число не имеет запятой и пробелом после него. Любое из этих неправильных решений упростит решение.

([1-9][0-9]*,[ ])*[1-9][0-9]*

Вот как я мысленно построил это:

[0-9]  any digit.
[1-9][0-9]*  leading non-zero digit followed by any number of digits
[1-9][0-9]*, as above, followed by a comma
[1-9][0-9]*[ ]  as above, followed by a space
([1-9][0-9]*[ ])*  as above, repeated 0 or more times
([1-9][0-9]*[ ])*[1-9][0-9]*  as above, with a final number that doesn't have a comma.

Ответ 4

Совместить дубликаты разделенных запятыми элементов:

(?<=,|^)([^,]*)(,\1)+(?=,|$)

Ссылка.

Это регулярное выражение может использоваться для разделения значений списка с разделителями-запятыми. Элементы списка могут быть указаны, некорректно или пустыми. Запятые внутри пары кавычек не совпадают.

,(?!(?<=(?:^|,)\s*"(?:[^"]|""|\\")*,)(?:[^"]|""|\\")*"\s*(?:,|$))

Ссылка.

Ответ 5

/^\d+(?:, ?\d+)*$/

Ответ 6

Я использовал это для списка элементов, которые должны были быть буквенно-цифровыми без подчеркивания в начале каждого элемента.

^(([0-9a-zA-Z][0-9a-zA-Z_]*)([,][0-9a-zA-Z][0-9a-zA-Z_]*)*)$

Ответ 7

Этот будет отклонять посторонние запятые в начале или конце строки, если это важно для вас.

((, )?(^)?(possible|value|patterns))*

Замените possible|value|patterns регулярным выражением, которое соответствует вашим допустимым значениям.

Ответ 8

Возможно, вы захотите указать язык, чтобы быть в безопасности, но

(\d+, ?)+(\d+)?

должен работать

Ответ 9

У меня было несколько другое требование: для синтаксического анализа закодированного словаря/хэш-таблицы с экранированными запятыми, например:

"1=This is something, 2=This is something,,with an escaped comma, 3=This is something else"

Я думаю, что это изящное решение с трюком, который позволяет избежать сложностей с регулярным выражением:

if (string.IsNullOrEmpty(encodedValues))
{
    return null;
}
else
{
    var retVal = new Dictionary<int, string>();
    var reFields = new Regex(@"([0-9]+)\=(([A-Za-z0-9\s]|(,,))+),");
    foreach (Match match in reFields.Matches(encodedValues + ","))
    {
        var id = match.Groups[1].Value;
        var value = match.Groups[2].Value;
        retVal[int.Parse(id)] = value.Replace(",,", ",");
    }
    return retVal;
}

Я думаю, что он может быть адаптирован к исходному вопросу с выражением типа @"([0-9]+),\s?" и разобрать на Groups[0].

Я надеюсь, что это поможет кому-то и спасибо за советы по его приближению, особенно Асаф!

Ответ 10

В JavaScript используйте split, чтобы помочь и поймать любые отрицательные цифры:

'-1,2,-3'.match(/(-?\d+)(,\s*-?\d+)*/)[0].split(',');
// ["-1", "2", "-3"]
// may need trimming if digits are space-separated

Ответ 11

Следующее будет соответствовать любой комбинации слов/цифр/пробелов, разделенных запятыми

(((.)*,)*)(.)*