Dalam format ini:
3D:F2:C9:A6:B3:4F
atau:
3D-F2-C9-A6-B3-4F
Format standar (IEEE 802) untuk mencetak alamat MAC-48 dalam bentuk yang ramah-manusia adalah enam kelompok dua digit heksadesimal, dipisahkan oleh tanda hubung
-
atau titik dua:
.
Begitu:
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
Sedikit keras di mata, tapi ini:
akan memberlakukan semua titik dua atau semua tanda hubung untuk notasi MAC Anda.
(Pendekatan regex yang lebih sederhana mungkin mengizinkan
A1:B2-C3:D4-E5:F6
, misalnya, yang ditolak di atas.)sumber
:xdigit:
kependekan dari hex digit, lebih atau kurang cara lain untuk mengatakan[a-fA-F0-9]
. The\1
mengacu pada kelompok capture untuk dasbor pertama atau usus besar([-:])
, dan hanya cocok dengan apa yang cocok yang pertama kalinya.:xdigit:
(meskipun "steno" hanya lebih pendek dari[a-fA-F0-9]
dan setara/[a-f0-9]/i
lebih pendek!)C8:FD:19:55:E6:3A
gagal? Ini alamat mac yang sebenarnya. Saya memodifikasi regex Anda:
hanya untuk menerima/^(?:[[:xdigit:]]{2}([:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/
Terima kasih!Regex ini cocok dengan hampir semua format mac termasuk format Cisco seperti
0102-0304-abcd
Contoh string yang cocok:
Format campuran akan dicocokkan juga!
sumber
aa.aa.bbbb.cccc
, misalnya./System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
, dan cari jalur BSSID, jika oktet apa pun di bawah 0x10 nol di awal dijatuhkan (%x
atau%2x
lebih daripada%02x
printf
format yang digunakan?)pembatas: " : ", " - ", " . "
ganda atau tunggal: 00 = 0, 0f = f
atau
sumber
{1,2}
regex[0-9a-F]
mungkin harus ditulis ulang sebagai:[0-9a-fA-F]
Berhati-hatilah karena properti Unicode
\p{xdigit}
menyertakan versi FULLWIDTH. Anda mungkin lebih suka\p{ASCII_Hex_Digit}
.Jawaban untuk pertanyaan yang diajukan mungkin paling baik dijawab - asalkan Anda memiliki modul CPAN terhormat tertentu diinstal - dengan mengetik:
Saya menunjukkan pola tertentu yang dihasilkannya di sini sebagai pola keberuntungan nomor 13; ada banyak lainnya.
Program ini:
menghasilkan output ini:
Yang sepertinya adalah hal yang Anda cari.
sumber
Tautan ini mungkin membantu Anda. Anda bisa menggunakan ini:
(([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2})|(([0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})
sumber
Lihat pertanyaan ini juga.
Regex sebagai berikut:
sumber
sumber
Versi python bisa berupa:
sumber
Regex di atas memvalidasi semua jenis alamat mac di bawah:
sumber
untuk pengembang PHP
sumber
Saya tidak berpikir bahwa RegEx utama sudah benar karena juga mengklasifikasikan
sebagai Alamat MAC yang valid, meskipun itu tidak benar. Yang benar adalah:
Sehingga setiap kali Anda dapat memilih ':' atau '-' untuk seluruh alamat MAC.
sumber
Anda dapat menggunakan prosedur berikut dengan mengirimkan alamat mac untuk validasi,
sumber
Orang PHP:
Perlu Penjelasan: http://regex101.com/r/wB0eT7
sumber
Jika Anda membutuhkan spasi di antara angka, seperti varian ini
Regex berubah menjadi
sumber
untuk mencocokkan alamat MAC EUI-48 48-bit dan 64-bit EUI-64:
di mana \ h adalah karakter dalam [0-9a-fA-F]
atau:
ini memungkinkan '-' atau ':' atau tidak ada pemisah yang digunakan
sumber
Mungkin yang sesingkat mungkin:
Pembaruan : Ada cara yang lebih baik untuk memvalidasi alamat MAC dalam PHP yang mendukung untuk alamat MAC gaya tanda hubung dan gaya tanda titik dua. Gunakan filter_var () :
Seperti yang saya tahu, ini mendukung alamat MAC dalam bentuk ini (x: angka heksadesimal):
sumber
Terima kasih banyak kepada @Moshe untuk jawaban hebat di atas. Setelah melakukan penelitian lebih lanjut saya ingin menambahkan temuan tambahan saya, baik dalam hal IEEE 802 dan menegakkan penggunaan pemisah yang konsisten di regex.
Kredit penuh untuk @ Moshe di sini untuk pernyataan awalnya, dan @pilcrow karena menunjukkan bahwa IEEE 802 hanya mencakup hipens.
Berikut adalah regex yang memberlakukan pemisah yang sama digunakan di seluruh alamat mac:
Demo Regex101
Dan berikut ini adalah tambahan yang memungkinkan untuk tidak menggunakan pemisah sama sekali:
Demo Regex101
sumber
Karena alamat MAC bisa 6 atau 20 byte (infiniband, ...) jawaban yang benar adalah:
Anda dapat mengganti: dengan [: -.]? jika Anda ingin pemisah yang berbeda atau tidak ada.
sumber
Yang ini kecil:
Ingat, campuran aneh beberapa karakter atau pemisah bisa lewat.
sumber
jawaban terbaik adalah untuk regex validasi alamat mac
sumber