javascript - 使用 JavaScript 替换和匹配方法时允许第一位数字为 0

标签 javascript

我正在使用 JavaScript 强制用户输入我希望的格式的值,
我使输入只能插入数字,并且它会在第 7 个位置自动添加 -值。

但是我发现如果用户想输入000319-19-2939,结果将变成319192-93-9
这个javascript当它与第一个一起出现时,将删除0

document.getElementById('others_textb').addEventListener('input', function (e) {
      var x = e.target.value.replace(/\D/g, '').match(/(\d{0,6})(\d{0,2})(\d{0,4})/);
      e.target.value = !x[2] ? x[1] :  + x[1] + '-' + x[2] + (x[3] ? '-' + x[3] : '');
      });
<input id="others_textb" type="text" name="number" placeholder="xxxxxx-xx-xxxx" >

我想要的是使 0 可以成为此输入中的第一个数字。

最佳答案

您通过+x[1]将第一个匹配组强制为整数:

e.target.value = !x[2] ? x[1] :  + x[1] + '-' + x[2] + (x[3] ? '-' + x[3] : '');
                                 ^

您可以删除强制转换 (+),其余代码应保留前导零。

document.getElementById('others_textb').addEventListener('input', function(e) {
  var x = e.target.value.replace(/\D/g, '').match(/(\d{0,6})(\d{0,2})(\d{0,4})/);
  e.target.value = 
    !x[2] 
      ? x[1] 
      : x[1] + '-' + x[2] + (x[3] 
                              ? '-' + x[3] 
                              : '');
});
<input id="others_textb" type="text" name="number" placeholder="xxxxxx-xx-xxxx">

关于javascript - 使用 JavaScript 替换和匹配方法时允许第一位数字为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49810461/

相关文章:

javascript - Jquery/JavaScript 函数冲突?

javascript - net.connect.setTimeout - 连接或套接字是什么超时类型?

javascript - 在 node.js 中运行多个 MSSQL 查询

javascript - React Hooks 无限循环

javascript - 在 javascript/jQuery 中加入字典列表中的元素?

javascript - React 组件内的构造函数

javascript - 如何向 JavaScript 对象添加方法并使用该对象的变量

javascript - 如何检查javascript的构造

javascript - 传单标记 'dragend' 触发 'click'

javascript - 如何在一个列表中隐藏除前两个之外的所有 li,在另一个列表中隐藏第三个和第四个?