উত্তর:
মানব-বান্ধব আকারে ম্যাক -48 ঠিকানা মুদ্রণের জন্য স্ট্যান্ডার্ড (আইইইই 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ব্যর্থ হয়? এটি একটি আসল ম্যাক ঠিকানা। আমি তোমার Regex পরিবর্তিত গ্রহণ করতে :শুধুমাত্র /^(?:[[:xdigit:]]{2}([:]))(?:[[:xdigit:]]{2}\1){4}[[:xdigit:]]{2}$/ধন্যবাদ!
এই রেজেক্সের সাথে সিসকো ফর্ম্যাট সহ প্রতিটি ম্যাক ফর্ম্যাট মিলবে 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 লাইন জন্য, এবং বর্ণন 0x10 অধীনে শূন্য অবনমিত হয়েছে ( %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}Regex
[0-9a-F]সম্ভবত [0-9a-fA-F]
সতর্কতা অবলম্বন করুন যে ইউনিকোডের সম্পত্তিতে \p{xdigit}সম্পূর্ণরূপে সংস্করণ রয়েছে। \p{ASCII_Hex_Digit}পরিবর্তে আপনি পছন্দ করতে পারেন।
জিজ্ঞাসা করা প্রশ্নের উত্তরটির উত্তম উত্তম উত্তর দেওয়া যেতে পারে - তবে শপথ করে আপনার যদি একটি নির্দিষ্ট ভেন্য্য সিপিএএন মডিউল ইনস্টল থাকে -
% perl -MRegexp::Common -lE 'say $RE{net}{MAC}'
আমি এখানে ভাগ্যবান প্যাটার্ন নম্বর হিসাবে প্রকাশিত নির্দিষ্ট প্যাটার্নটি দেখি ; আরও অনেক আছে।
এই প্রোগ্রাম:
#!/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})
এই প্রশ্নটি দেখুন ।
নিম্নরূপ হিসাবে রেজেক্সেস:
^[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
পিএইচপি বিকাশকারী জন্য
filter_var($value, FILTER_VALIDATE_MAC)
আমি মনে করি না যে প্রধান রেজিএক্স এটি শ্রেণিবদ্ধ হিসাবে সঠিক
'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();
}
পিএইচপি লোকেরা:
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 MAC ঠিকানার সাথে মেলে:
/\A\h{2}([:\-]?\h{2}){5}\z|\A\h{2}([:\-]?\h{2}){7}\z/
যেখানে 0 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
আপডেট : পিএইচপি-তে MAC ঠিকানাগুলি যাচাই করার জন্য একটি আরও ভাল উপায় বিদ্যমান যা হাইফেন-স্টাইল্ড এবং কোলন-স্টাইলযুক্ত ম্যাক উভয় ঠিকানার জন্য সমর্থন করে। ফিল্টার_ওয়ার () ব্যবহার করুন :
// 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
উপরের দুর্দান্ত উত্তরের জন্য @ মোশিকে অনেক ধন্যবাদ । আরও কিছু গবেষণা করার পরে আমি আমার অতিরিক্ত অনুসন্ধানগুলি উভয়ই আইইইই 802 এর সাথে যুক্ত করতে এবং রেগেজেটে ধারাবাহিক বিভাজক প্রয়োগ প্রয়োগ করতে চাই।
মান মানুষের বান্ধব আকারে ম্যাক-48 ঠিকানাগুলি মুদ্রণের জন্য (আইইইই 802) বিন্যাস দুই হেক্সাডেসিমেল সংখ্যা, দ্বারা পৃথক ছয়টি গ্রুপ হয় হাইফেন - । তবে, বৃহত্তর: এবং চারটি হেক্সাডেসিমাল ডিজিটের তিনটি দলকে পিরিয়ড দ্বারা আলাদা করার জন্য এটি বহুলভাবে গৃহীত কনভেনশন । ।
পূর্ণ ক্রেডিট @Moshe এখানে তার প্রাথমিক বিবৃতি জন্য, এবং @pilcrow জন্য ইশারা করে আইইইই 802 শুধুমাত্র hypens জুড়ে।
এখানে এমন একটি রেজেক্স রয়েছে যা ম্যাক ঠিকানার মধ্যে একই বিভাজকটি ব্যবহৃত হয়:
^(?:(?:[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 বাইট হতে পারে (ইনফিনিব্যান্ড, ...) সঠিক উত্তরটি হ'ল:
^([0-9A-Fa-f]{2}:){5}(([0-9A-Fa-f]{2}:){14})?([0-9A-Fa-f]{2})$
আপনি প্রতিস্থাপন করতে পারেন: সাথে [: -।]? আপনি যদি আলাদা বিভাজক বা কেউ না চান।
সর্বোত্তম উত্তর হ'ল ম্যাক অ্যাড্রেস বৈধতা রেগেক্স
^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$