En este formato:
3D:F2:C9:A6:B3:4F
o:
3D-F2-C9-A6-B3-4F
El formato estándar (IEEE 802) para imprimir direcciones MAC-48 en forma amigable para los humanos es seis grupos de dos dígitos hexadecimales, separados por guiones
-
o dos puntos:
.
Entonces:
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
Un poco duro para los ojos, pero esto:
aplicará todos los dos puntos o todos los guiones para su notación MAC.
(Un enfoque de expresión regular más simple podría permitir
A1:B2-C3:D4-E5:F6
, por ejemplo, lo que rechaza lo anterior).fuente
:xdigit:
es la abreviatura de dígito hexadecimal, más o menos otra forma de decir[a-fA-F0-9]
. Se\1
refiere al grupo de captura para el primer guión o dos puntos([-:])
, y solo coincide con lo que coincidió esa primera vez.:xdigit:
(a pesar de que "abreviada" no ha hecho más corto que[a-fA-F0-9]
y equivalentes/[a-f0-9]/i
es más corta!)C8:FD:19:55:E6:3A
falla? Es una dirección mac real. Modifiqué tu expresión regular para aceptar:
solo/^(?:[[:xdigit:]]{2}([:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/
¡Gracias!Esta expresión regular coincide con casi todos los formatos de Mac, incluido el formato de Cisco, como
0102-0304-abcd
Cadenas de ejemplo con las que coincide:
¡El formato mixto también coincidirá!
fuente
aa.aa.bbbb.cccc
, por ejemplo./System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
y busque la línea BSSID, si algún octeto está por debajo de 0x10, el cero inicial se descarta (¿%x
o%2x
no se%02x
printf
utiliza el formato?)delimitador: " : ", " - ", " . "
doble o simple: 00 = 0, 0f = f
o
fuente
{1,2}
expresión regular[0-9a-F]
probablemente debería reescribirse como:[0-9a-fA-F]
Tenga en cuenta que la propiedad Unicode
\p{xdigit}
incluye las versiones FULLWIDTH. Quizás prefieras en su\p{ASCII_Hex_Digit}
lugar.La respuesta a la pregunta formulada podría ser la mejor respuesta, siempre que tenga un cierto módulo CPAN venerable instalado, escribiendo:
Muestro el patrón particular que muestra aquí como patrón de suerte número 13; Hay muchos otros.
Este programa:
genera esta salida:
Que parece el tipo de cosa que estás buscando.
fuente
Este enlace puede ayudarte. Puedes usar esto:
(([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2})|(([0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})
fuente
Ver esta pregunta también.
Regexes de la siguiente manera:
fuente
fuente
La versión de Python podría ser:
fuente
La expresión regular anterior valida todos los tipos de direcciones mac a continuación:
fuente
para desarrollador PHP
fuente
No creo que el RegEx principal sea correcto, ya que también clasifica
como una dirección MAC válida, aunque no sea correcta. El correcto sería:
Para que cada vez pueda elegir ':' o '-' para toda la dirección MAC.
fuente
Puede usar el siguiente procedimiento pasando la dirección mac para la validación,
fuente
Gente PHP:
Necesidad de explicación: http://regex101.com/r/wB0eT7
fuente
Si necesita espacios entre números, como esta variante
La expresión regular cambia a
fuente
para que coincidan con las direcciones MAC EUI-48 de 48 bits y EUI-64 de 64 bits:
donde \ h es un carácter en [0-9a-fA-F]
o:
esto permite '-' o ':' o ningún separador para ser utilizado
fuente
Quizás lo más corto posible:
Actualización : existe una mejor manera de validar las direcciones MAC en PHP que admite direcciones MAC con guiones y con dos puntos. Use filter_var () :
Como sé, admite direcciones MAC en estas formas (x: un número hexadecimal):
fuente
Muchas gracias a @Moshe por la excelente respuesta anterior. Después de investigar un poco más, me gustaría agregar mis hallazgos adicionales, tanto en lo que respecta a IEEE 802 como a imponer el uso de separadores consistentes en expresiones regulares.
Todo el crédito a @Moshe aquí por su declaración inicial, y a @pilcrow por señalar que IEEE 802 solo cubre bombo.
Aquí hay una expresión regular que impone que el mismo separador se use en toda la dirección mac:
Regex101 demo
Y aquí hay uno adicional que permite el uso de ningún separador:
Regex101 demo
fuente
Como una dirección MAC puede tener 6 o 20 bytes (infiniband, ...) la respuesta correcta es:
puede reemplazar: con [: -.]? si quieres separadores diferentes o ninguno.
fuente
Este es pequeño:
Tenga en cuenta que esa extraña mezcla de varios caracteres o separadores podría pasar.
fuente
la mejor respuesta es para regex de validación de dirección mac
fuente