In diesem Format:
3D:F2:C9:A6:B3:4F
oder:
3D-F2-C9-A6-B3-4F
Das Standardformat (IEEE 802) zum Drucken von MAC-48-Adressen in benutzerfreundlicher Form besteht aus sechs Gruppen mit zwei hexadezimalen Ziffern, die durch Bindestriche
-
oder Doppelpunkte getrennt sind:
.
So:
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
Ein bisschen hart für die Augen, aber das:
Erzwingt entweder alle Doppelpunkte oder alle Bindestriche für Ihre MAC-Notation.
(Ein einfacherer Regex-Ansatz könnte beispielsweise zulassen
A1:B2-C3:D4-E5:F6
, was der oben genannte ablehnt.)quelle
:xdigit:
ist die Abkürzung für Hex-Ziffer, mehr oder weniger eine andere Art zu sagen[a-fA-F0-9]
. Das\1
bezieht sich auf die Erfassungsgruppe für den ersten Bindestrich oder Doppelpunkt([-:])
und stimmt nur mit dem überein, was beim ersten Mal übereinstimmte.:xdigit:
(obwohl diese "Kurzschrift" nur kürzer als[a-fA-F0-9]
und gleichwertig/[a-f0-9]/i
kürzer ist!)C8:FD:19:55:E6:3A
ausfällt? Es ist eine tatsächliche Mac-Adresse. Ich habe Ihre Regex so geändert, dass:
nur/^(?:[[:xdigit:]]{2}([:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/
Danke akzeptiert wird !Dieser reguläre Ausdruck passt zu nahezu jedem Mac-Format, einschließlich des Cisco-Formats wie
0102-0304-abcd
Beispielzeichenfolgen, mit denen es übereinstimmt:
Das gemischte Format wird ebenfalls angepasst!
quelle
aa.aa.bbbb.cccc
beispielsweise akzeptiert wird./System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
die BSSID-Zeile aus und suchen Sie sie. Wenn ein Oktett unter 0x10 liegt, wird die führende Null gelöscht (%x
oder%2x
nicht das verwendete%02x
printf
Format?)Trennzeichen: " : ", " - ", " . "
doppelt oder einfach: 00 = 0, 0f = f
oder
quelle
{1,2}
regulären Ausdruck[0-9a-F]
sollte jedoch wahrscheinlich wie folgt umgeschrieben werden:[0-9a-fA-F]
Seien Sie gewarnt, dass die Unicode-Eigenschaft
\p{xdigit}
die FULLWIDTH-Versionen enthält. Vielleicht bevorzugen Sie\p{ASCII_Hex_Digit}
stattdessen.Die Antwort auf die gestellte Frage kann am besten beantwortet werden - vorausgesetzt, Sie haben ein bestimmtes ehrwürdiges CPAN-Modul installiert -, indem Sie Folgendes eingeben:
Ich zeige das spezielle Muster, das hier ausgegeben wird als Glücksmuster Nummer 13; es gibt viele andere.
Dieses Programm:
generiert diese Ausgabe:
Welches scheint die Art von Dingen, die Sie suchen.
quelle
Dieser Link könnte Ihnen helfen. Sie können dies verwenden:
(([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2})|(([0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})
quelle
Siehe diese Frage .
Regexes wie folgt:
quelle
quelle
Die Python-Version könnte sein:
quelle
Der obige reguläre Ausdruck überprüft alle unten aufgeführten Mac-Adresstypen:
quelle
für PHP-Entwickler
quelle
Ich denke nicht, dass das Haupt-RegEx korrekt ist, da es auch klassifiziert
als gültige MAC-Adresse, obwohl sie nicht korrekt ist. Das Richtige wäre:
Damit können Sie jedes Mal ':' oder '-' für die gesamte MAC-Adresse wählen.
quelle
Sie können das folgende Verfahren verwenden, indem Sie die Mac-Adresse zur Validierung übergeben:
quelle
PHP-Leute:
Benötigen Sie eine Erklärung: http://regex101.com/r/wB0eT7
quelle
Wenn Sie Leerzeichen zwischen Zahlen benötigen, wie bei dieser Variante
Die Regex ändert sich zu
quelle
um sowohl 48-Bit-EUI-48- als auch 64-Bit-EUI-64-MAC-Adressen abzugleichen:
wobei \ h ein Zeichen in [0-9a-fA-F] ist
oder:
Dadurch kann '-' oder ':' oder kein Trennzeichen verwendet werden
quelle
Vielleicht so schnell wie möglich:
Update : Es gibt eine bessere Möglichkeit, MAC-Adressen in PHP zu validieren, die sowohl MAC-Adressen im Bindestrich- als auch im Doppelpunktstil unterstützt. Verwenden Sie filter_var () :
Wie ich weiß, werden MAC-Adressen in folgenden Formen unterstützt (x: eine Hexadezimalzahl):
quelle
Vielen Dank an @Moshe für die großartige Antwort oben. Nach weiteren Recherchen möchte ich meine zusätzlichen Erkenntnisse hinzufügen, sowohl in Bezug auf IEEE 802 als auch in Bezug auf die Durchsetzung einer konsistenten Verwendung von Trennzeichen in Regex.
Volle Anerkennung an @Moshe hier für seine erste Aussage und an @pilcrow für den Hinweis, dass IEEE 802 nur Hypens abdeckt.
Hier ist ein regulärer Ausdruck, der erzwingt, dass in der gesamten Mac-Adresse dasselbe Trennzeichen verwendet wird:
Regex101-Demo
Und hier ist eine zusätzliche, bei der überhaupt kein Trennzeichen verwendet werden kann:
Regex101-Demo
quelle
Da eine MAC-Adresse 6 oder 20 Bytes (Infiniband, ...) sein kann, lautet die richtige Antwort:
Sie können ersetzen: durch [: -.]? wenn Sie verschiedene oder keine Trennzeichen möchten.
quelle
Dieser ist klein:
Denken Sie daran, dass eine seltsame Mischung aus mehreren Zeichen oder Trennzeichen passieren könnte.
quelle
Die beste Antwort ist für Regex zur Überprüfung der Mac-Adresse
quelle