[英]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()
。
基本上我想删除:
然后通过第二个函数将新值拉入日志。
问题规范说你要删除:
和:
空格。 使正则表达式中的空格可选:
a = a.replace(/:( )?/g, '');
但是你还需要考虑前面的空格:
a = a.replace(/( )?:( )?/g, '');
我也会修剪初始字符串(Just good practice)
a = a.trim().replace(/( )?:( )?/g, '');
最后,我不确定这行是做什么的: document.getElementById.innerHTML = a;
,但该行将引发错误。 去掉它。
如果你只想保留数字和字母,你可以使用它
a.replace(/[^a-zA-Z0-9]/g, '');
它基本上用空字符串替换不是az或AZ或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;
}
你的正则表达式搜索“冒号紧接着空格”。
如果在它们之间添加管道 : /:| /
/:| /
,然后它将以任何顺序搜索所有冒号和/或空格。
演示:
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.