我真的很陌生。我想在表单字段中验证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()));
});
});
答案 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)
匹配正则表达式一次,然后在上一次匹配后再次尝试,尽可能多次。因此,您实际上是循环遍历四个十六进制数字的组,而不是您显然想要的两个数字。