Следующее регулярное выражение допускает любое количество цифр (включая ни одной), за которыми, возможно, стоит одна запятая, за которой следует любое количество цифр. Этот шаблон должен охватывать от начала до конца с использованием символов ^
и $
, поэтому другие символы не допускаются:
^[0-9]*,?[0-9]+$
Попробуйте здесь:
let inp = document.getElementsByTagName('input')[0];
let p = document.getElementsByTagName('p')[0];
inp.addEventListener('input', () => {
let result = inp.value.match(`^[0-9]*,?[0-9]+$`);
p.innerHTML = `Is "${inp.value}" allowed? ${result ? 'YES' : 'NO'}`;
});
body { font-family: monospace; }
<input type="text" placeholder="try a value here"/>
<p></p>