Regex: целые числа, разделенные запятыми - PullRequest
10 голосов
/ 27 мая 2010

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

Мне удалось найти это, но я не могу понять, как снять ограничение на число

^\d{1,10}([,]\d{10})*$

Ответы [ 4 ]

35 голосов
/ 27 мая 2010

Публикации, которую вы разместили, по-прежнему требуется как минимум 1 целое число, поэтому она не будет соответствовать пустой строке:

Вот что вам нужно:

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

Explaination:

  1. поместите всю вещь в круглые скобки и завершите '?', чтобы соответствовать пустой строке.
  2. Всегда начинайте с целого числа, поэтому '\d+'. Это 1 или более цифр ('0'-'9')
  3. Затем сделайте набор скобок, который содержит ',\d+' и поставьте звездочку после него.
    3a. Внутренний означает начать с «,» затем целое число. 3b. Звездочка означает повторить все внутри круглых скобок 0 или более раз.

Хенч все это either an empty string or start with an integer then repeat zero or more times a string which starts with a comma and ends with an integer

3 голосов
/ 27 мая 2010

{1,10} и {10} являются диапазонами.Вы можете заменить их на + для бесконечно-положительного.Например:

1005 *
1 голос
/ 27 мая 2010

Попробуйте следующее:

^(\d+(,\d+)*)?$
0 голосов
/ 18 июня 2019

Некоторые другие ответы попадают в 4 цифры между запятыми. Вот небольшое изменение с необязательным знаком и принудительным использованием 3 цифр между запятыми:

^[+-]?(\d+(,\d{3})*)$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...