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

Требуется регулярное выражение для проверки числа с разделителем запятой. 1,5,10,55, но 1,, 10 недействителен.

3 ответа

Это должно сделать это:

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

Регулярное выражение довольно просто: \d+ - это первое число, за которым следуют необязательные запятые и другие числа.

Вы можете захотеть вставить \s*, где вы считаете нужным, или удалить все пробелы перед проверкой.

  • Чтобы отрицательные числа заменили \d+ на [+-]?\d+
  • Чтобы разрешить дроби: замените \d+ на [+-]?\d+(?:\.\d+)?


Вот компоненты регулярного выражения, которые мы собираемся использовать:

  • \d является сокращением для символьного класса символов
  • + является одним или более спецификатором повторения
  • * - спецификатор повторения с нулевым или большим числом
  • (...) выполняет группировку
  • ^ и $ - это начало и конец строчных привязок соответственно

Теперь мы можем составить необходимое нам регулярное выражение:

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

То есть:

from beginning...
| ...to the end
| |
^\d+(,\d+)*$ i.e. ^num(,num)*$
 \_/ \_/ 
 num num

Обратите внимание, что * означает, что разрешено только одно число. Если вы настаиваете хотя бы на два числа, используйте вместо этого +. Вы также можете заменить \d+ на другой шаблон для номера, разрешающего, например. знак и/или дробная часть.

Ссылки

Расширенные темы: оптимизация

По желанию вы можете сделать скобки не захватывающими для производительности:

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

И если аромат поддерживает его, вы можете сделать все повторение притяжательным в этом случае:

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

Ссылки


^[0-9]*(,){1}[0-9]*/

попробуйте это

licensed under cc by-sa 3.0 with attribution.