You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制输入框仅允许输入11位数字,可选加短横线及后续11位数字

实现输入框的11位数字+可选短横线+11位数字限制

核心思路

先过滤掉所有非数字和短横线的字符,再按照「最多11位数字 → 可选短横线 → 最多11位数字」的规则约束输入内容,同时支持实时校验和格式修正。

步骤1:引入jQuery

如果你的页面还没引入jQuery,先在<head>标签里添加:

<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>

步骤2:修改输入框代码

可以移除原生oninput事件,改用jQuery绑定逻辑,保持输入框结构简洁:

<input type="text" class="form-control" placeholder="e.g 03xxxxxxxxx-03xxxxxxxxx" id="contact">

步骤3:编写jQuery限制逻辑

$(document).ready(function() {
  // 实时监听输入事件,修正输入内容
  $('#contact').on('input', function() {
    let inputValue = $(this).val();
    
    // 第一步:只保留数字和短横线,过滤其他所有字符
    inputValue = inputValue.replace(/[^0-9-]/g, '');
    
    // 第二步:按短横线拆分,约束各部分长度
    let valueParts = inputValue.split('-');
    
    // 第一部分(前半段数字)最多11位
    if (valueParts[0].length > 11) {
      valueParts[0] = valueParts[0].slice(0, 11);
    }
    
    // 处理短横线后的内容:最多保留1个短横线,且后半段最多11位数字
    if (valueParts.length > 2) {
      // 超过1个短横线时,合并后续内容并只保留数字,截取前11位
      valueParts[1] = valueParts.slice(1).join('').replace(/[^0-9]/g, '').slice(0, 11);
      valueParts = [valueParts[0], valueParts[1]];
    } else if (valueParts.length === 2) {
      // 后半段只保留数字,最多11位
      valueParts[1] = valueParts[1].replace(/[^0-9]/g, '').slice(0, 11);
    }
    
    // 重新拼接成合法内容,放回输入框
    $(this).val(valueParts.join('-'));
  });

  // 可选:失去焦点时的格式校验(提示用户输入规范)
  $('#contact').on('blur', function() {
    const finalValue = $(this).val();
    // 正则规则:要么是11位数字,要么是11位数字+短横线+11位数字
    const validPattern = /^(\d{11}|\d{11}-\d{11})$/;
    
    if (finalValue && !validPattern.test(finalValue)) {
      alert('请输入正确格式,例如:03123456789 或 03123456789-03987654321');
      // 也可以选择清空输入框:$(this).val('');
    }
  });
});

代码解释

  • replace(/[^0-9-]/g, ''):强制过滤掉所有非数字、非短横线的字符,避免用户输入无效内容
  • 拆分短横线后分别约束长度:确保前半段最多11位,后半段最多11位,且只能有1个短横线
  • blur事件的校验是可选增强:在用户输入完成后,提示是否符合最终格式规范

内容的提问来源于stack exchange,提问作者Iqra khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:35:31