带前导零的整数的位数

时间:2018-04-06 04:00:28

标签: javascript node.js

我有一个前导零的数字说00000006906.我希望这个数字的数字为11.我试过

var num = 00000006906;
num.length// always outputs 4

num.toString().length// always outputs 4

长度但它总是以4返回,因为javascript总是将其视为6906.这个数字来自用户输入,我需要验证这一点。将此数字视为参考编号,并且始终预期其具有11位数的前导零。我想检查位数只是因为我想验证它是否满足所需的格式。感谢帮助。感谢。

2 个答案:

答案 0 :(得分:1)

请将输入视为字符串,不要将其限制为整数,否则JavaScript将始终删除前导零。

答案 1 :(得分:0)

不是您的问题的答案,而是通过强制执行所需模式来解决问题的解决方案/解决方法。

const input = document.querySelector('input');
input.onfocus = function(){
  input.selectionEnd = input.selectionStart = 11;
}
input.oninput = function(){
  input.value = input.value.match(/^\s*0*(\d{0,11})/)[1].padStart(11, 0);
};
input:valid {
  background-color: #CFC;
}

input:invalid {
  background-color: #FCC;
  color: red;
}
<label>
reference number: 
<input value="00000000000" pattern="^\d{11}$" />
</label>