以下代码将阻止用户输入前导0。它只接受0-9
中的任何数字,并拒绝任何前导零,例如019
。但是,正则表达式不接受0
,例如101
或0
。如何在输入中接受0
?
console.log('input', e.target.value)
const z = /^[1-9]$/g;
if (!z.test(e.key)) {
console.log('match', e.target.value);
e.preventDefault();
}
这是公认的输入:
0
101
1110
提前致谢。
答案 0 :(得分:3)
正则表达式:^(?!0\d)\d+$
function myFunction() {
console.clear()
var s = document.getElementById("input").value;
console.log(/^(?!0\d)\d+$/.test(s));
}
<form action="javascript:myFunction()">
<input id="input" type="text" name="math" value="0"><br><br>
<input type="submit" value="Submit">
</form>
答案 1 :(得分:2)
怎么样:
const regex = /((^[1-9][0-9]*$)|(^[0-9]$))/g
这会加入您的输入。
答案 2 :(得分:1)
数字应以非零开始或为零。 所以,正则表达式可能是
const z = /^(?:[1-9][0-9]*|0)$/g;
或
const z = /^(?:[1-9]\d*|0)$/g;