Regex: целые числа с разделителями-запятыми

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

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

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

Ответ 1

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

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

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

Explaination:

  • поставьте все в скобках и закончите с '?', чтобы соответствовать пустой строке.
  • Всегда начинайте с целого числа, поэтому '\d+'.. Это 1 или более цифр символов ('0'-'9')
  • Затем создайте набор скобок, содержащий ',\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

Ответ 2

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

^\d+([,]\d+)*$

Ответ 3

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

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

Ответ 4

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

^[+-]?(\d+(,\d{3})*)$