Требуется регулярное выражение для проверки числа с разделителем запятых. 1,5,10,55 действителен, но 1 ,,,, 10 недействителен.
Это должно сработать:
^\d+(,\d+)*$
Регулярное выражение довольно простое: \ d +
- первое число, за которым следуют необязательные запятые и другие числа.
Вы можете добавить \ s *
туда, где считаете нужным, или удалить все пробелы перед проверкой.
\ d +
на [+ -]? \ D +
\ d +
на [+ - ]? \ d + (?: \. \ d +)?
Вот компоненты regex, которые мы будем использовать:
\d
- сокращение для класса цифровых символов+
- спецификатор повторения один-или-больше*
- спецификатор повторения ноль-или-больше(. ...)
выполняет группировку^
и $
- это якоря начала и конца строки соответственноТеперь мы можем составить нужный нам regex:
^\d+(,\d+)*$
То есть:
from beginning...
| ...to the end
| |
^\d+(,\d+)*$ i.e. ^num(,num)*$
\_/ \_/
num num
Обратите внимание, что *
означает, что допускается наличие только одного числа. Если вы настаиваете на наличии хотя бы двух чисел, то используйте +
. Вы также можете заменить \d+
на другой шаблон для числа, чтобы разрешить, например, знак и/или дробную часть.
По желанию можно сделать скобки незахватывающими для производительности:
^\d+(?:,\d+)*$
А если вкус это поддерживает, можно сделать все повторения притяжательными в этом случае:
^\d++(?:,\d++)*+$