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

Задача состоит в том что нужно написать регулярное выражение которое принимает в себя целое число и число с запятой. Перед запятой нужно оставить всего 5 символов, так же целое число должно состоять из 5. а после запятой всего 2. С запятой данное выражение работает. Да оно ограничивает. А вот если просто писать целые числа без запятой он считает их до 7. А нужно чтобы до 5. Ни как не пойму как по-другому можно написать

const newValue = '1234567'
const newValue1 = '12345.22'
const regexp = /^\d{0,5}[,]?[0-9]{0,2}$/
console.log(regexp.test(String(newValue)))
console.log(regexp.test(String(newValue1)))


Ответы (1 шт):

Автор решения: Алексей Р

Подвыражение для дробной части помещаем в незахватывающую группу (?:[.,]\d{0,2})? с квантификатором ? (ноль или один).

let values = [1234567, 12345.22, 12345.678, 12345.1, 123, 12345];
const regexp = /^\d{5}(?:[.,]\d{0,2})?$/;
values.forEach(el => console.log(`${el}: ${regexp.test(el)}`));

→ Ссылка