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

Angular中如何去除IP掩码输入框中的下划线字符?

解决IP输入掩码提交时带多余下划线的问题

我完全懂你现在的困扰——用Inputmask实现IP输入框后,没填完的位置会带着下划线_一起提交,比如输入到192.168.0.0就提交的话,会变成192.168.0.0__,之前尝试用正则处理还把整个内容弄空了,别提多闹心了。别慌,给你几个靠谱的解决方案:

方案一:用Inputmask原生配置(最推荐)

Inputmask本身就有专门处理这个问题的配置项removeMaskOnSubmit,只需要把它设为true,就能在表单提交时自动移除掩码里的占位符(也就是那些下划线),完全不用手动写正则。

修改后的代码如下:

maskedInputs = { 
  init: function() { 
    $("#mask_ip").inputmask({ 
      mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]", 
      definitions: { 
        'i': { 
          validator: function (chrs, buffer, pos, strict, opts) { 
            if (pos - 1 > -1 && buffer[pos - 1] != ".") { 
              chrs = buffer[pos - 1] + chrs; 
              if (pos - 2 > -1 && buffer[pos - 2] != ".") { 
                chrs = buffer[pos - 2] + chrs; 
              } else chrs = "0" + chrs; 
            } else chrs = "00" + chrs; 
            return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs); 
          }, 
          cardinality: 1 
        } 
      },
      // 新增这行配置,提交时自动移除占位符下划线
      removeMaskOnSubmit: true
    }); 
  } 
};

这个选项会自动识别掩码里的占位符,只保留用户实际输入的有效IP片段,不会破坏原有内容,是最稳妥的方法。

方案二:手动在提交前清理值

如果因为Inputmask版本问题导致上面的配置不生效,那可以手动在表单提交时处理输入值,只需要移除所有下划线即可:

// 给表单绑定提交事件
$('form').submit(function() {
  const ipInput = $('#mask_ip');
  // 移除所有下划线
  const cleanIp = ipInput.val().replace(/_/g, '');
  // 将清理后的值重新赋值给输入框
  ipInput.val(cleanIp);
});

或者在获取提交值的时候直接处理:

// 获取并清理值
const submitIp = $('#mask_ip').val().replace(/_/g, '');
// 用submitIp参与提交逻辑

之前你用正则处理导致内容为空,大概率是正则表达式写错了,这个replace(/_/g, '')只会匹配并替换所有下划线,不会影响正常的IP内容。

方案三:修改占位符为空(备选)

如果不想看到输入框里的下划线,也可以直接把占位符设为空字符串,这样输入框里不会显示下划线,提交自然也不会带了:

$("#mask_ip").inputmask({ 
  mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]", 
  definitions: { /* 保持原有定义 */ },
  // 把占位符设为空
  placeholder: ''
});

不过这个方案会让用户看不到输入的位置提示,可能影响体验,所以只作为备选方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:20:07