我是正则表达式的新手。我有一个文本字段,我需要将输入限制为数字和一个逗号。我知道如何限制数字。但是我还有另一个条件。如果用户输入逗号,则必须在此后输入另一个数字。对位数没有限制。只能有一个逗号。以下是所有有效输入: 123456 4567,8907
但是我不允许4567。 我有这种模式,pattern =“ [0-9] +([,] [0-9] +)?” 但它不起作用。
答案 0 :(得分:1)
以下正则表达式允许任意数量的数字(包括无数字),并可以选择后面跟一个逗号,然后任意数量的数字。此模式必须使用^
和$
符号从头到尾进行扩展,因此不允许使用其他字符:
^[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>