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

jQuery正则实现输入框自动空格:前两位后加空格,后续每三位加空格

输入框格式化:前两位后加空格,后续每三位加空格

你的代码问题出在逻辑覆盖和规则匹配上:当输入长度超过5时,会直接把所有字符按3个一组拆分,完全忽略了「前两位单独分隔」的核心规则;同时像长度为5(2+3)这种边界情况也没处理到。

下面是修复后的代码,同时改用input事件(比keyup更适配粘贴、右键输入等场景):

$('#form-field-indentification_number').on('input', function() {
  // 先移除所有已存在的空格,避免重复格式化
  let rawValue = $(this).val().replace(/\s/g, '');
  
  // 应用格式规则:前两位后加空格,后续每三位加空格
  let formattedValue = rawValue
    // 给前两位数字后加空格(仅当后面还有数字时)
    .replace(/^(\d{2})(?=\d)/, '$1 ')
    // 给后面每三位数字后加空格(仅当后面还有数字时)
    .replace(/(\d{3})(?=\d)/g, '$1 ');
  
  $(this).val(formattedValue);
})

代码说明:

  • replace(/\s/g, ''):清空所有空格,确保每次格式化都是基于纯原始内容
  • 第一个正则/^(\d{2})(?=\d)/:匹配开头的两位数字,且后面还有数字时,在两位后插入空格
  • 第二个正则/(\d{3})(?=\d)/g:全局匹配每三位数字,且后面还有数字时,在三位后插入空格
  • 用input事件替代keyup:能覆盖手动输入、粘贴、拖拽输入等更多场景,避免格式化遗漏

如果需要限制输入仅为数字,可以在处理前再加一步过滤:

rawValue = rawValue.replace(/\D/g, ''); // 移除所有非数字字符

内容的提问来源于stack exchange,提问作者Vladimir Kyatipov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:50:43