जवाबों:
मानव-अनुकूल रूप में मैक -48 के पतों को मुद्रित करने के लिए मानक (IEEE 802) प्रारूप दो हेक्साडेसिमल अंकों के छह समूह हैं, जिन्हें हाइफ़न
-या कॉलोन द्वारा अलग किया गया है:।
इसलिए:
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
आंखों पर थोड़ा मुश्किल, लेकिन यह:
/^(?:[[:xdigit:]]{2}([-:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/
आपके मैक संकेतन के लिए सभी कॉलन या सभी डैश को लागू करेगा।
( A1:B2-C3:D4-E5:F6उदाहरण के लिए एक सरल रेगेक्स दृष्टिकोण की अनुमति हो सकती है , जो उपरोक्त अस्वीकार करता है।)
:xdigit:हेक्स अंक के लिए कम, कहने का एक और तरीका है [a-fA-F0-9]। \1पहले पानी का छींटा या पेट के लिए कब्जा समूह को संदर्भित करता ([-:])है, और केवल मेल खाता है कि पहली बार क्या मिलान नहीं हुआ।
:xdigit:(भले ही "शॉर्टहैंड" केवल तुलना में छोटा हो [a-fA-F0-9]और समकक्ष /[a-f0-9]/iछोटा हो!)
C8:FD:19:55:E6:3Aविफल रहता है? यह एक वास्तविक मैक एड्रेस है। मैंने :केवल /^(?:[[:xdigit:]]{2}([:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/धन्यवाद स्वीकार करने के लिए आपके regex को संशोधित किया है !
यह रेगेक्स सिस्को प्रारूप जैसे मैक फॉर्म सहित हर मैक प्रारूप से काफी मेल खाता है 0102-0304-abcd
^([[:xdigit:]]{2}[:.-]?){5}[[:xdigit:]]{2}$
उदाहरण तार जो यह मेल खाता है:
01:02:03:04:ab:cd
01-02-03-04-ab-cd
01.02.03.04.ab.cd
0102-0304-abcd
01020304abcd
मिश्रित प्रारूप का भी मिलान किया जाएगा!
aa.aa.bbbb.cccc, उदाहरण के लिए।
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I, और BSSID लाइन की तलाश करें, यदि कोई %x%2x%02x printf
सीमांकक: " : ", " - ", " । "
डबल या सिंगल: 00 = 0, 0f = f
/^([0-9a-f]{1,2}[\.:-]){5}([0-9a-f]{1,2})$/i
या
/^([0-9a-F]{1,2}[\.:-]){5}([0-9a-F]{1,2})$/
exm: 00:27:0e:2a:b9:aa, 00-27-0E-2A-B9-AA, 0.27.e.2a.b9.aa ...
{1,2}रेगेक्स की आवश्यकता
[0-9a-F]को संभवतः फिर से लिखा जाना चाहिए:[0-9a-fA-F]
चेतावनी दी है कि यूनिकोड संपत्ति \p{xdigit}में FULLWIDTH संस्करण शामिल हैं। आप \p{ASCII_Hex_Digit}इसके बजाय पसंद कर सकते हैं ।
पूछे गए प्रश्न का उत्तर सबसे अच्छा हो सकता है - बशर्ते आपके पास एक निश्चित आदरणीय सीपीएएन मॉड्यूल स्थापित हो - टाइप करके:
% perl -MRegexp::Common -lE 'say $RE{net}{MAC}'
मैं विशेष पैटर्न दिखाता हूं जो यहां आउटपुट करता है भाग्यशाली पैटर्न नंबर 13 के रूप में करता है; कई अन्य हैं।
यह कार्यक्रम:
#!/usr/bin/env perl
use 5.010;
use strict;
use warnings qw<FATAL all>;
my $mac_rx = qr{
^ (?&MAC_addr) $
(?(DEFINE)
(?<MAC_addr>
(?&pair) (?<it> (?&either) )
(?: (?&pair) \k<it> ) {4}
(?&pair)
)
(?<pair> [0-9a-f] {2} )
(?<either> [:\-] )
)
}xi;
while (<DATA>) {
chomp;
printf("%-25s %s\n", $_ => /$mac_rx/ ? "ok" : "not ok");
}
__END__
3D:F2:C9:A6:B3:4F
3D:F2:AC9:A6:B3:4F
3D:F2:C9:A6:B3:4F:00
:F2:C9:A6:B3:4F
F2:C9:A6:B3:4F
3d:f2:c9:a6:b3:4f
3D-F2-C9-A6-B3-4F
3D-F2:C9-A6:B3-4F
यह उत्पादन उत्पन्न करता है:
3D:F2:C9:A6:B3:4F ok
3D:F2:AC9:A6:B3:4F not ok
3D:F2:C9:A6:B3:4F:00 not ok
:F2:C9:A6:B3:4F not ok
F2:C9:A6:B3:4F not ok
3d:f2:c9:a6:b3:4f ok
3D-F2-C9-A6-B3-4F ok
3D-F2:C9-A6:B3-4F not ok
ऐसा लगता है कि आप जिस चीज की तलाश कर रहे हैं।
यह लिंक आपकी मदद कर सकता है। आप इसका उपयोग कर सकते हैं:(([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2})|(([0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})
इस प्रश्न को भी देखें ।
इस प्रकार के रूप में Regexes:
^[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}$
^[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}$
अजगर संस्करण हो सकता है:
re.compile(r'\A(?:[\da-f]{2}[:-]){5}[\da-f]{2}\Z',re.I)
/^(([a-fA-F0-9]{2}-){5}[a-fA-F0-9]{2}|([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}|([0-9A-Fa-f]{4}\.){2}[0-9A-Fa-f]{4})?$/
ऊपर का रेक्सक्स नीचे दिए गए सभी मैक पतों को मान्य करता है:
01-23-45-67-89-ab
01:23:45:67:89:ab
0123.4567.89ab
PHP डेवलपर के लिए
filter_var($value, FILTER_VALIDATE_MAC)
मुझे नहीं लगता कि मुख्य RegEx सही है क्योंकि यह भी वर्गीकृत करता है
'3D-F2-C9:A6-B3:4F'
एक मान्य मैक पते के रूप में, भले ही यह सही न हो। सही एक होगा:
((([a-zA-z0-9]{2}[-:]){5}([a-zA-z0-9]{2}))|(([a-zA-z0-9]{2}:){5}([a-zA-z0-9]{2})))
ताकि हर बार जब आप पूरे मैक पते के लिए ':' या '-' चुन सकें।
आप सत्यापन के लिए मैक पते को पारित करके निम्नलिखित प्रक्रिया का उपयोग कर सकते हैं,
private static final String MAC_PATTERN = "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$";
private boolean validateMAC(final String mac){
Pattern pattern = Pattern.compile(MAC_PATTERN);
Matcher matcher = pattern.matcher(mac);
return matcher.matches();
}
PHP दोस्तों:
print_r(preg_match('/^(?:[0-9A-F]{2}[:]?){5}(?:[0-9A-F]{2}?)$/i', '00:25:90:8C:B8:59'));
स्पष्टीकरण की आवश्यकता: http://regex101.com/r/wB0eT7
दोनों 48-बिट EUI-48 और 64-बिट EUI-64 मैक पते से मेल खाने के लिए:
/\A\h{2}([:\-]?\h{2}){5}\z|\A\h{2}([:\-]?\h{2}){7}\z/
जहाँ \ h एक चरित्र है [0-9a-fA-F]
या:
/\A[0-9a-fA-F]{2}([:\-]?[0-9a-fA-F]{2}){5}\z|\A[0-9a-fA-F]{2}([:\-]?[0-9a-fA-F]{2}){7}\z/
यह '-' या ':' या किसी विभाजक का उपयोग करने की अनुमति नहीं देता है
शायद सबसे कम संभव:
/([\da-f]{2}[:-]){5}[\da-f]{2}/i
अद्यतन : PHP में मैक पतों को मान्य करने के लिए एक बेहतर तरीका मौजूद है जो हाइफ़न-स्टाइल और कोलोन-स्टाइल मैक पते दोनों के लिए समर्थन करता है। फ़िल्टर_वर () का उपयोग करें :
// Returns $macAddress, if it's a valid MAC address
filter_var($macAddress, FILTER_VALIDATE_MAC);
जैसा कि मुझे पता है, यह इन रूपों में मैक पते का समर्थन करता है (x: एक हेक्साडेसिमल संख्या):
xx:xx:xx:xx:xx:xx
xx-xx-xx-xx-xx-xx
xxxx.xxxx.xxxx
करने के लिए बहुत बहुत धन्यवाद @Moshe के लिए महान जवाब ऊपर। कुछ और शोध करने के बाद मैं अपने अतिरिक्त निष्कर्षों को जोड़ना चाहूंगा, दोनों IEEE 802 के संबंध में और रेक्स में सुसंगत विभाजक उपयोग को लागू करने के लिए।
मानव-अनुकूल रूप में मैक -48 पतों को मुद्रित करने के लिए मानक (IEEE 802) प्रारूप दो हेक्साडेसिमल अंकों के छह समूहों है, जिन्हें हाइफ़न द्वारा अलग किया गया है - । हालाँकि, व्यापक रूप से अपनाया गया अधिवेशन भी बृहदान्त्र को अनुमति देता है: और चार हेक्साडेसिमल अंकों के तीन समूहों को अवधि द्वारा अलग किया गया । ।
अपने प्रारंभिक बयान के लिए यहाँ @Moshe को पूरा श्रेय , और @pilcrow को इंगित करने के लिए कि IEEE 802 केवल हाइपेंस को कवर करता है।
यहाँ एक रेगेक्स है जो लागू करता है कि पूरे मैक पते पर एक ही विभाजक का उपयोग किया जाता है:
^(?:(?:[0-9A-Fa-f]{2}(?=([-:]))(?:\1[0-9A-Fa-f]{2}){5}))$
और यहाँ एक अतिरिक्त है जो बिना किसी विभाजक के उपयोग की अनुमति देता है:
^(?:(?:[0-9A-Fa-f]{2}(?=([-:]|))(?:\1[0-9A-Fa-f]{2}){5}))$
मैक पते के रूप में 6 या 20 बाइट्स (infiniband, ...) सही उत्तर हो सकता है:
^([0-9A-Fa-f]{2}:){5}(([0-9A-Fa-f]{2}:){14})?([0-9A-Fa-f]{2})$
आप बदल सकते हैं: [: -] के साथ यदि आप अलग विभाजक चाहते हैं या कोई नहीं।
सबसे अच्छा जवाब मैक पते सत्यापन regex के लिए है
^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$