Neste formato:
3D:F2:C9:A6:B3:4F
ou:
3D-F2-C9-A6-B3-4F
O formato padrão (IEEE 802) para impressão de endereços MAC-48 em formato compatível com humanos é de seis grupos de dois dígitos hexadecimais, separados por hífens
-
ou dois pontos:
.
Assim:
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
Um pouco duro para os olhos, mas isso:
aplicará todos os dois pontos ou todos os hífens para sua notação MAC.
(Uma abordagem mais simples de regex pode permitir
A1:B2-C3:D4-E5:F6
, por exemplo, que o acima rejeitado).fonte
:xdigit:
é a abreviação de dígito hexadecimal, mais ou menos outra maneira de dizer[a-fA-F0-9]
. O\1
refere-se ao grupo de captura para o primeiro traço ou dois pontos([-:])
e corresponde apenas ao que correspondeu à primeira vez.:xdigit:
(apesar de que "taquigrafia" é apenas mais curto do que[a-fA-F0-9]
e equivalente/[a-f0-9]/i
é mais curto!)C8:FD:19:55:E6:3A
falha? É um endereço mac real. Modifiquei seu regex para aceitar:
apenas/^(?:[[:xdigit:]]{2}([:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/
Obrigado!Esse regex corresponde a praticamente todos os formatos Mac, incluindo o Cisco, como
0102-0304-abcd
Sequências de exemplo correspondentes:
O formato misto será combinado também!
fonte
aa.aa.bbbb.cccc
, por exemplo./System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
, e olhar para a linha BSSID, se houver octeto está sob 0x10 zero à esquerda é descartado (%x
ou%2x
em vez de%02x
printf
formato usado?)delimitador: " : ", " - ", " . "
duplo ou único: 00 = 0, 0f = f
ou
fonte
{1,2}
regex[0-9a-F]
provavelmente deve ser reescrito como:[0-9a-fA-F]
Esteja avisado de que a propriedade Unicode
\p{xdigit}
inclui as versões FULLWIDTH. Você pode preferir\p{ASCII_Hex_Digit}
.A resposta para a pergunta pode ser melhor respondida - desde que você tenha um determinado módulo CPAN venerável instalado - digitando:
Mostro o padrão específico que ele gera aqui como padrão de sorte número 13; existem muitos outros.
Este programa:
gera esta saída:
Qual parece o tipo de coisa que você está procurando.
fonte
Este link pode ajudá-lo. Você pode usar isto:
(([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2})|(([0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})
fonte
Veja esta pergunta também.
Regexa da seguinte maneira:
fonte
fonte
A versão python pode ser:
fonte
O regex acima valida todos os tipos de endereços mac abaixo:
fonte
para desenvolvedor PHP
fonte
Não acho que o principal RegEx esteja correto, pois também classifica
como um endereço MAC válido, mesmo que não esteja correto. O correto seria:
Para que toda vez você possa escolher ':' ou '-' para todo o endereço MAC.
fonte
Você pode usar o procedimento a seguir, passando o endereço mac para validação,
fonte
Gente do PHP:
Necessita de explicação: http://regex101.com/r/wB0eT7
fonte
Se você precisar de espaços entre números, como esta variante
O regex muda para
fonte
para corresponder aos endereços MAC EUI-48 e EUI-64 de 64 bits:
onde \ h é um caractere em [0-9a-fA-F]
ou:
isso permite que '-' ou ':' ou nenhum separador seja usado
fonte
Talvez o mais curto possível:
Atualização : Existe uma maneira melhor de validar endereços MAC em PHP, que suporta endereços MAC com hífen e dois pontos. Use filter_var () :
Como eu sei, ele suporta endereços MAC nessas formas (x: um número hexadecimal):
fonte
Muito obrigado a @Moshe pela ótima resposta acima. Depois de fazer mais algumas pesquisas, gostaria de adicionar minhas descobertas extras, tanto no que diz respeito ao IEEE 802 quanto na aplicação consistente do uso de separadores no regex.
Crédito total para @Moshe aqui por sua declaração inicial e para @pilcrow por apontar que o IEEE 802 cobre apenas hypens.
Aqui está um regex que impõe que o mesmo separador seja usado em todo o endereço mac:
Demonstração Regex101
E aqui está outro adicional que permite o uso de nenhum separador:
Demonstração Regex101
fonte
Como um endereço MAC pode ter 6 ou 20 bytes (banda infinita, ...), a resposta correta é:
você pode substituir: por [: -.]? se você quiser separadores diferentes ou nenhum.
fonte
Este é um pequeno:
Tenha em mente que essa mistura estranha de vários caracteres ou separadores pode passar.
fonte
a melhor resposta é para regex de validação de endereço mac
fonte