如何在表单字段中验证mac地址

时间:2018-03-08 03:47:20

标签: regex validation

我真的很陌生。我想在表单字段中验证mac地址,并显示mac地址的格式是否错误/无效。我尝试按照xxxmatko编码,就像验证mac地址的相同问题一样,但它没有显示任何内容。只是一个输入文本,并没有与正则表达式很好地工作。如果有人可以提供帮如何在表单字段中验证mac地址?

$(function() {
var regexp = /^(([A-Fa-f0-9]{2}[:]){5}[A-Fa-f0-9]{2}?)+$/i;

$("#mac_address_wifi1").on("input", function(e) {
var tb = $(this);
    var val = tb.val().replace(/[^a-f0-9]/ig, "");
    var r = /([a-f0-9]{2})([a-f0-9]{2})/i;
    while (r.test(val)) {
        val = val.replace(r, '$1' + ':' + '$2');
    }
    val = val.slice(0, 17);
    tb.val(val);    
    tb.toggleClass("badMac", !regexp.test(tb.val()));
});

});

1 个答案:

答案 0 :(得分:0)

我想问题出在这里:

var r = /([a-f0-9]{2})([a-f0-9]{2})/i;
while (r.test(val)) {
    val = val.replace(r, '$1' + ':' + '$2');
}

构造while (regex)匹配正则表达式一次,然后在上一次匹配后再次尝试,尽可能多次。因此,您实际上是循环遍历四个十六进制数字的组,而不是您显然想要的两个数字。