簡體   English   中英

從輸入字段中刪除特殊字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM