从输入字段中删除特殊字符

新手上路,请多包涵

我一直在到处寻找,但一直找不到我要找的东西。

我有一个 html 表单,其中填写了我们库存中的 Mac 地址,因此输入到输入字段中的字符串如下所示:

A1:A2:A3:A4:A5:A6

我正在尝试编写一个脚本来删除 : 字符以及任何地方的任何空格。这样当它被输入时,输出将是:

A1A2A3A4A5A6

这是我到目前为止所拥有的:

 <input type="text" id="macaddress" onChange="removeChar();WriteLog();" />

然后在我的脚本中我有:

 function removeChar() {
  var a = document.getElementById("macaddress").value;
  a = a.replace(/: /g, '');
  document.getElementById.innerHTML = a;
}

我没有收到任何 JavaScript 错误,但没有任何反应。

我还有另一个脚本将字段的值提取到工作日志中,这是另一个函数 WriteLog()

本质上我想删除 : 然后通过第二个函数将新值拉入日志。

原文由 Michael 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 497
2 个回答

问题规范说你想用空格删除 :: 。使正则表达式中的空格可选:

a = a.replace(/:( )?/g, '');

但是您还需要考虑前面的空格:

a = a.replace(/( )?:( )?/g, '');

我也会修剪初始字符串(只是很好的练习)

a = a.trim().replace(/( )?:( )?/g, '');

最后,我不确定此行的作用: document.getElementById.innerHTML = a; ,但该行会引发错误。去掉它。

原文由 S. Walker 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你只想保留数字和让你可以使用这个

a.replace(/[^a-zA-Z0-9]/g, '');

它基本上用空字符串替换了不是 az 或 AZ 或 0-9 的所有内容。

解释正则表达式和测试它的一个很好的工具是 Regex101

而这一行 document.getElementById.innerHTML = a; 也应该被修复,你可能意味着类似 document.getElementById('some-elements-id').innerHTML = a;

原文由 AwesomeGuy 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题