Как насчет \d([:.]\d?)?
?Это должно охватывать все случаи, которые вы упомянули.
или \d+([:.]\d*?)?
, если вы хотите принять более одной цифры в каждом номере.
Чтобы совпадать только в случае точного, просто добавьте ^
кначало и $
до конца регулярного выражения.Пример:
const regex = /^\d+([:.]\d*?)?$/
console.log(regex.test('2'))
console.log(regex.test('2:'))
console.log(regex.test('2.'))
console.log(regex.test('2:3'))
console.log(regex.test('2.3'))
console.log(regex.test('12:23'))
console.log(regex.test('23.34'))
console.log(regex.test('2:3:4'))
console.log(regex.test('2.3.4'))