Javascript正则表达式拒绝在数字中领先0

时间:2018-02-09 22:47:52

标签: javascript regex

以下代码将阻止用户输入前导0。它只接受0-9中的任何数字,并拒绝任何前导零,例如019。但是,正则表达式不接受0,例如1010。如何在输入中接受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

提前致谢。

3 个答案:

答案 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;