从输入字段中删除特殊字符
Remove special characters from input field
我一直在到处寻找,但一直找不到我要找的东西。
我有一个 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()
。
基本上我想删除 :
然后通过第二个函数将新值拉入日志。
问题规范说你想用 space 删除 :
和 :
。使正则表达式中的 space 可选:
a = a.replace(/:( )?/g, '');
但您还需要考虑前面的 spaces:
a = a.replace(/( )?:( )?/g, '');
我也会 trim 初始字符串(很好的练习)
a = a.trim().replace(/( )?:( )?/g, '');
最后,我不确定这一行的作用:
document.getElementById.innerHTML = a;
,但该行将引发错误。删除它。
如果你只想保留数字和让你可以使用这个
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;
要从字符串中删除冒号和空格,只需使用
str = str.replace(/[:\s]/g, '');
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;
}
您的正则表达式搜索 "colon immediately followed by space"。
如果您在它们之间添加一个 管道:/:| /
,那么它将以任何顺序搜索所有冒号 and/or 空格。
演示:
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>
我一直在到处寻找,但一直找不到我要找的东西。
我有一个 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()
。
基本上我想删除 :
然后通过第二个函数将新值拉入日志。
问题规范说你想用 space 删除 :
和 :
。使正则表达式中的 space 可选:
a = a.replace(/:( )?/g, '');
但您还需要考虑前面的 spaces:
a = a.replace(/( )?:( )?/g, '');
我也会 trim 初始字符串(很好的练习)
a = a.trim().replace(/( )?:( )?/g, '');
最后,我不确定这一行的作用:
document.getElementById.innerHTML = a;
,但该行将引发错误。删除它。
如果你只想保留数字和让你可以使用这个
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;
要从字符串中删除冒号和空格,只需使用
str = str.replace(/[:\s]/g, '');
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;
}
您的正则表达式搜索 "colon immediately followed by space"。
如果您在它们之间添加一个 管道:/:| /
,那么它将以任何顺序搜索所有冒号 and/or 空格。
演示:
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>