Если предположить, что "числа" - это одно или несколько экземпляров класса цифр \d
, одно регулярное выражение будет:
^\d+(,\d+)+$|^\[\d+(,\d+)+\]$
Другие варианты «чисел» могут быть [1-9][0-9]*
, которые не допускают начальные нули и будут ближе к представлению C / C ++ / C # / Java целочисленного литерала десятичного . Например, ведущие нули в C / C ++ / C # / Java обозначают восьмеричные целочисленные литералы. В Java я считаю, что 0
официально является десятичным литералом, поэтому более точное выражение будет 0|[1-9][0-9]*
, тогда как в C ++ 0
технически является восьмеричным литералом (я думаю!).
Если предположить целочисленные литералы в стиле Java, то наше выражение станет:
^(0|[1-9][0-9]*)(,(0|[1-9][0-9]*)+)+$|^\[(0|[1-9][0-9]*)+(,(0|[1-9][0-9]*)+)+\]$
Что бы вы ни делали, вам нужно решить, что представляет собой «число» в вашей ситуации, которое может совпадать или не совпадать с языком программирования, на котором вы реализуете свою программу.
Полезные ссылки: