将“:”替换为“-”,同时格式化mac地址

Tuf*_*aan 6 html javascript regex

我目前正在使用它来格式化输入文本,使其在两个字符后带有“-”,并将不是“af”或“0-9”的字符替换为“”。

var macAddress = document.getElementById("macInput");

function formatMAC(e) {
  var r = /([a-f0-9]{2})([a-f0-9]{2})/i,
      str = e.target.value.replace(/[^a-f0-9]/ig, "");

  while (r.test(str)) {
    str = str.replace(r, '$1' + '-' + '$2');
  }
  e.target.value = str.slice(0, 17);
};

macAddress.addEventListener("keyup", formatMAC, false);
Run Code Online (Sandbox Code Playgroud)

我希望它也检测用户是否写了“:”并将其替换为“-”,因此不可能写出“:”。不知道如何实现这一点。

Jos*_*ulf 3

简单的。.split().join()

var macAddress = document.getElementById("macInput");

function formatMAC(e) {
  var r = /([a-f0-9]{2})([a-f0-9]{2})/i,
      str = e.target.value.replace(/[^a-f0-9]/ig, "");

  while (r.test(str)) {
    str = str.replace(r, '$1' + '-' + '$2');
  }
  e.target.value = str.slice(0, 17).split(':').join('');
};

macAddress.addEventListener("keyup", formatMAC, false);
Run Code Online (Sandbox Code Playgroud)