Javascript Java脚本中的mac地址验证(00:00:00:00:00)

Javascript Java脚本中的mac地址验证(00:00:00:00:00),javascript,Javascript,任何人都可以发送javascript代码来验证网络mac地址(例如02:41:6d:22:12:f1),它接受00:00:00:00到ff:ff:ff:ff的值。在文本框的按键事件中,我需要允许字符0-9,a-f和:(冒号)。到目前为止,我得到的是 macPattern = /^([0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2}$/i; 有了它,我可以为ff:ff:ff:ff:ff抛出异常,但我还需要为00:00:00:00抛出异常。我的模式不是抛出异常 你能给我一个模

任何人都可以发送javascript代码来验证网络mac地址(例如
02:41:6d:22:12:f1
),它接受
00:00:00:00
ff:ff:ff:ff
的值。在文本框的按键事件中,我需要允许字符
0-9
a-f
(冒号)。到目前为止,我得到的是

macPattern = /^([0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2}$/i;
有了它,我可以为
ff:ff:ff:ff:ff
抛出异常,但我还需要为
00:00:00:00
抛出异常。我的模式不是抛出异常

你能给我一个模式吗?通过这个模式,我可以为
ff:ff:ff:ff:ff:ff
00:00:00:00
抛出一个异常。我的答案是:

^([0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F][1-9a-eA-E]$

哦,如果我们回答的是关于验证mac的问题,这是我的:但这仍然不能回答问题:如何防止不构成mac地址的字符

function isValidMac(mac) {
  var a = mac.split(':');
  if (a.length !== 6) {
    return false;
  }
  for (var i=0; i<6; i++) {
    var s = "0x"+a[i];
    if (s>>0 === 0 || s.length != 4) {
      return false;
    }
  }
  return true;
}
函数isValidMac(mac){
var a=mac.split(“:”);
如果(a.长度!==6){
返回false;
}
对于(变量i=0;i>0==0 | | s.length!=4){
返回false;
}
}
返回true;
}

我认为,虽然其他答案都是有效的,但它们忽略了OP问题的按键方面。 虽然在这种情况下这可能并不重要,但我相信UX可以改进

我建议

-validating length =12
-accepting {0-9,a-f,A-F},
-alert {g-z,G-Z)   (invalid character)
-ignore all others  (including Tab, cr, lf, crlf)
-confirm exit after the 12th character
-display 3 forms; raw, couplet, quad 

我还没有机会编码,但会在完成后提交并修改

而不是尝试制作一个更复杂的正则表达式,为什么不首先检查输入值
ff:ff:ff:ff:ff
00:00:00:00
,然后如果两者都不是,则通过正则表达式运行它?我只会按原样使用正则表达式,并添加两个已知异常的快速检查(仅使用!=)。正则表达式与“执行验证输入所需的所有逻辑”不是同义词。如果您需要排除
ff:ff:ff:ff:ff
00:00:00:00
,正如@ajp15243两次建议的那样,最好使用普通编程逻辑排除这些情况,而不是“您能给我一个完整的模式吗?”另外,有人告诉您必须在一个正则表达式中完成所有操作吗?如果是,是谁,为什么?这是家庭作业吗?这显然不符合任何确保输入为实际MAC地址的实际标准。经过一些检查,我发现有281474976710656个可能的有效MAC地址。这正好是2^48,这意味着您试图排除的两种情况在理论上都是可能的。为什么只有最后一位数字不能是
0
f
?其他数字呢?该正则表达式在任何以
0
f
结尾的MAC地址上都不匹配(例如,
12:34:56:78:9a:bf
),而不是排除所有
0
s或所有
f
s的情况。
var MACAddress = document.getElementById("MACAddress");
var MACRegex=new RegExp("^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$");
MACRegex.test(MACAddress);
-validating length =12
-accepting {0-9,a-f,A-F},
-alert {g-z,G-Z)   (invalid character)
-ignore all others  (including Tab, cr, lf, crlf)
-confirm exit after the 12th character
-display 3 forms; raw, couplet, quad