Dans ce format:
3D:F2:C9:A6:B3:4F
ou:
3D-F2-C9-A6-B3-4F
Le format standard (IEEE 802) pour l'impression d'adresses MAC-48 sous une forme conviviale est six groupes de deux chiffres hexadécimaux, séparés par des tirets
-
ou des deux-points:
.
Alors:
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
Un peu dur pour les yeux, mais ceci:
appliquera tous les deux-points ou tous les tirets pour votre notation MAC.
(Une approche regex plus simple pourrait permettre
A1:B2-C3:D4-E5:F6
, par exemple, ce que ce qui précède rejette.)la source
:xdigit:
est l'abréviation de hexadécimal, plus ou moins une autre façon de dire[a-fA-F0-9]
. Le\1
fait référence au groupe de capture pour le premier tiret ou deux([-:])
- points et correspond uniquement à ce qui correspond à la première fois.:xdigit:
(même si ce "raccourci" est juste plus court[a-fA-F0-9]
et son équivalent/[a-f0-9]/i
est plus court!)C8:FD:19:55:E6:3A
échoue? C'est une véritable adresse Mac. J'ai modifié votre regex pour n'accepter:
que/^(?:[[:xdigit:]]{2}([:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/
Merci!Cette expression régulière correspond à presque tous les formats Mac, y compris le format Cisco, tel que
0102-0304-abcd
Exemple de chaînes auxquelles il correspond:
Le format mixte sera également adapté!
la source
aa.aa.bbbb.cccc
, par exemple./System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
et recherchez la ligne BSSID, si un octet est sous 0x10, le zéro est supprimé (%x
ou%2x
plutôt que le%02x
printf
format utilisé?)délimiteur: " : ", " - ", " . "
double ou simple: 00 = 0, 0f = f
ou
la source
{1,2}
expression régulière[0-9a-F]
devrait probablement être réécrit comme suit:[0-9a-fA-F]
Soyez averti que la propriété Unicode
\p{xdigit}
inclut les versions FULLWIDTH. Vous pourriez préférer à la\p{ASCII_Hex_Digit}
place.La réponse à la question posée pourrait être mieux répondue - à condition que vous ayez un certain module vénérable CPAN installé - en tapant:
Je montre le modèle particulier qu'il produit ici comme le modèle chanceux numéro 13; il y en a beaucoup d'autres.
Ce programme:
génère cette sortie:
Ce qui semble être le genre de chose que vous recherchez.
la source
Ce lien pourrait vous aider. Vous pouvez utiliser ceci:
(([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2})|(([0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})
la source
Voir aussi cette question .
Regexes comme suit:
la source
la source
La version python pourrait être:
la source
Le regex ci-dessus valide tous les types d'adresses mac ci-dessous:
la source
pour développeur PHP
la source
Merci beaucoup à @Moshe pour l' excellente réponse ci-dessus. Après avoir fait quelques recherches, j'aimerais ajouter mes découvertes supplémentaires, à la fois en ce qui concerne IEEE 802 et en imposant une utilisation cohérente des séparateurs dans les regex.
Merci à @Moshe ici pour sa déclaration initiale, et à @pilcrow pour avoir souligné que IEEE 802 ne couvre que les hypens.
Voici une expression régulière qui impose que le même séparateur soit utilisé dans toute l'adresse mac:
Démo Regex101
Et voici un autre qui permet de ne pas utiliser de séparateur du tout:
Démo Regex101
la source
Je ne pense pas que le RegEx principal soit correct car il classe également
comme une adresse MAC valide, même si elle n'est pas correcte. Le bon serait:
Ainsi, à chaque fois, vous pouvez choisir «:» ou «-» pour toute l'adresse MAC.
la source
Vous pouvez utiliser la procédure suivante en passant l'adresse mac pour validation,
la source
Les gens de PHP:
Besoin d'explications: http://regex101.com/r/wB0eT7
la source
Si vous avez besoin d'espaces entre les nombres, comme cette variante
L'expression régulière change en
la source
pour faire correspondre les adresses MAC 48 bits EUI-48 et 64 bits EUI-64:
où \ h est un caractère dans [0-9a-fA-F]
ou:
cela permet d'utiliser '-' ou ':' ou aucun séparateur
la source
Peut-être le plus court possible:
Mise à jour : Il existe un meilleur moyen de valider les adresses MAC en PHP qui prend en charge les adresses MAC de style tiret et deux-points. Utilisez filter_var () :
Comme je le sais, il prend en charge les adresses MAC sous ces formes (x: un nombre hexadécimal):
la source
Comme une adresse MAC peut être de 6 ou 20 octets (infiniband, ...) la bonne réponse est:
vous pouvez remplacer: par [: -.]? si vous voulez des séparateurs différents ou aucun.
la source
Celui-ci est petit:
Gardez à l'esprit que ce mélange étrange de plusieurs caractères ou séparateurs pourrait passer.
la source
la meilleure réponse est pour la regex de validation d'adresse mac
la source