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

时间:2018-09-18 13:47:57

标签: javascript special-characters onchange

我一直在到处搜索,但一直找不到我想要的东西。

我有一个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()

基本上,我想删除:,然后通过第二个函数将新值拉到日志中。

5 个答案:

答案 0 :(得分:3)

问题规范说,您要删除::上的空格。将正则表达式中的空间设置为可选:

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

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

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

我也会修剪初始字符串(只是一个好习惯)

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

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

答案 1 :(得分:0)

如果您只想保留数字和字母,可以使用此

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

基本上用空字符串替换非a-z或A-Z或0-9的所有内容。

Regex101

是解释正则表达式并对其进行测试的一个很好的工具。

这行document.getElementById.innerHTML = a;也应修复,您可能表示类似document.getElementById('some-elements-id').innerHTML = a;

答案 2 :(得分:0)

只需从字符串中删除冒号和空格即可

str = str.replace(/[:\s]/g, '');

答案 3 :(得分:0)

HTML

<input type="text" id="macaddress"/>
<button onclick="removeChar()">Click me!</button>

JS

function removeChar() {
    var a = document.getElementById("macaddress").value.trim();
    a = a.split('');
    a.forEach(function (character, index) {
        if (character === ':') {
            a.splice(index, 1);
        }
    });
    a = a.join('');
    document.getElementById("macaddress").value  = a;
}

答案 4 :(得分:0)

您的Regex搜索“冒号后紧跟空格”。

如果在它们之间添加管道/:| /,它将以任何顺序搜索所有冒号和/或空格。

演示:

function removeChar() {
  var a = document.getElementById("macaddress").value;
  a = a.replace(/:| /g, '');
  document.getElementById("result").innerHTML = a;
}
<input type="text" id="macaddress" onChange="removeChar();" />
<div id="result"></div>