Regexp সহ IPv4 ঠিকানাগুলি বৈধকরণ


90

আমি আইপিভি 4 যাচাইয়ের জন্য একটি দক্ষ রেজেেক্স পাওয়ার চেষ্টা করেছি, তবে অনেক ভাগ্য ছাড়াই। এটি আমার কাছে ছিল এমন এক পর্যায়ে দেখে মনে হয়েছিল (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}, তবে এটি কিছু অদ্ভুত ফলাফল এনেছে:

$ grep --version
grep (GNU grep) 2.7
$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.1
192.168.1.1
$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.255
192.168.1.255
$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.255.255
$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.2555
192.168.1.2555

এটি ইতিমধ্যে জিজ্ঞাসা করা হয়েছে এবং উত্তর দেওয়া হয়েছে কিনা তা দেখার জন্য আমি একটি অনুসন্ধান করেছি, তবে অন্যান্য উত্তরগুলি কেবল 1-3 টি সংখ্যার 4 টি গ্রুপ নির্ধারণ করবেন বা আমার জন্য কাজ করবেন না তা কেবল প্রদর্শিত হবে।


12
ভুলে যাবেন না যে এ, এবং এ বি, এবং এবিসি হ'ল আইপি ঠিকানার বৈধ রূপের পাশাপাশি এবিসিডি সিরিয়াসলি। চেষ্টা করুন ping 2130706433এবং ping 127.1একটি চটকদার জন্য।
dty

4
আমার বৈকল্পিক অনলাইন regexr.com/39hqf
Sllouyssgort

উত্তর:


97

আপনি ইতিমধ্যে একটি কার্যকরী উত্তর পেয়েছেন তবে কেবলমাত্র যদি আপনি আগ্রহী হন যে আপনার আসল পদ্ধতির সাথে কী ভুল হয়েছিল, উত্তরটি হ'ল আপনার পরিবর্তনের চারপাশে প্রথম বন্ধনী প্রয়োজন অন্যথায় (\.|$)সংখ্যাটি 200 এর চেয়ে কম হলে কেবল এটিই প্রয়োজন।

'\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b'
    ^                                    ^

25
এটি 192.168.1.1.1
19:30 এ

4
এটি হওয়া উচিত \b((?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:(?<!\.)\b|\.)){4}:; অর্থাত্‍ এটি লাইনের শেষের চেয়ে শব্দের সীমানা দিয়ে শেষ হয়? অতিরিক্তভাবে এখানে আমি অযাচিত সাব-ম্যাচগুলি এড়াতে নন-ক্যাপচারিং গ্রুপগুলি চিহ্নিত করেছি। এনবি: এটি এখনও ডিটিটির মন্তব্যে আমলে নিবে না কারণ আমি আইপি-র ফর্মের সাথে পরিচিত নই; যদিও তিনি সঠিক যে এটি বৈধ বলে মনে হচ্ছে।
জনএলবেয়ান

পরিবর্তে আপনি এটি চেষ্টা করতে পারেন: ((1? \ D \ d? | 2 [0-4] \ d | 25 [0-5]) \।) {3} (1? \ D \ d? | 2 [0-4] \ d | 25 [0-5])
মর্গ।

এটি ক্যাপচার না করার জন্য ভাল কাজ করে -\b(?:(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b
অ্যাপি

4
হয় 09.09.09.09একটি বৈধ IP বিবেচিত? এটি এই রেজেক্সের সাথে মিলে যায়। তবে পিং ত্রুটি বার্তাটি ছুড়ে দেয় ping: cannot resolve 09.09.09.09: Unknown host। আমি মনে করি কেবল ডট-ডেসিমাল নোটেশন ম্যাচিংয়ের সাথে ম্যাচটি কম করা বুদ্ধিমান হতে পারে। এই এন্ট্রি আইপি ঠিকানাগুলিতে নেতৃস্থানীয় ত্রুটিগুলি নিয়ে আলোচনা করে।
রুইফেং মা

79
^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

গ্রহণ করুন :

127.0.0.1
192.168.1.1
192.168.1.255
255.255.255.255
0.0.0.0
1.1.1.01

প্রত্যাখ্যান করুন :

30.168.1.255.1
127.1
192.168.1.256
-1.2.3.4
1.1.1.1.
3...3

ইউনিট পরীক্ষা দিয়ে অনলাইনে চেষ্টা করুন: https://www.debuggex.com/r/-EDZOqxTxhiTncN6/1


"3 ... 3" আইপি ঠিকানা সম্পর্কে কি? 3 ... 3 এই
রেজেক্সটি

7
1.1.1.01 সম্পর্কে কি? এটি একটি বৈধ IPv4 ঠিকানা হিসাবে বিবেচনা করা হয়? ধন্যবাদ
ওডিয়াতলা

এই regexp 1.1.1.01 ভ্যালিড IPv4 ঠিকানা হিসাবে বিবেচনা করুন। অনলাইন ইউনিট টেস্টগুলি ডিবাগেক্সএক্স / আর /
এজেডঅক্সএক্সএক্সএনটিএনএন

প্রণালী দ্বারা ^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}$একই ফলাফল পেতে debuggex.com/r/mz_-0dEm3wseIKqK , বেশ @Mark Byers উত্তরটি একই
Sllouyssgort

@ প্রিতেশআচার্য এখানে দুর্দান্ত কাজ করে।
কিড হীরা 13

34

সর্বাধিক, সংক্ষিপ্ততম, স্বল্পতম পঠনযোগ্য সংস্করণ ( 55 টি অক্ষর )

^((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])(\.(?!$)|$)){4}$

এই সংস্করণটি 250-5 কেসের জন্য অনুসন্ধান করে, তারপরে এটি চতুরতার সাথে কেসগুলির জন্য সমস্ত সম্ভাব্য কেসগুলিকে OR করে দেয় 200-249 100-199 10-99। লক্ষ্য করুন যে |)অংশটি কোনও ভুল নয়, তবে আসলে 0-9 সীমার জন্য সর্বশেষ কেস হয়েছে। আমি ?:নন-ক্যাপচারিং গ্রুপ অংশটিও বাদ দিয়েছি কারণ আমরা সত্যিকার অর্থে ক্যাপচার হওয়া আইটেমগুলির যত্ন নেই, যদি আমাদের প্রথম স্থানে পুরো ম্যাচ না হয় তবে সেগুলি কোনওভাবেই ধরা পড়বে না।

পুরানো এবং সংক্ষিপ্ত সংস্করণ (কম পাঠযোগ্য) ( rs৩ টি অক্ষর )

^(?:(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(\.(?!$)|$)){4}$

পুরানো (পঠনযোগ্য) সংস্করণ ( 70 টি অক্ষর )

^(?:(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])(\.(?!$)|$)){4}$

এটি আইপিতে কোনওটি (?!)দিয়ে শেষ হতে পারে এমন ক্ষেত্রে সরাতে negativeণাত্মক চেহারা ব্যবহার করে.

প্রাচীন উত্তর ( ১১৫ টি অক্ষর )

^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}
    (?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$

আমি মনে করি এটি সর্বাধিক নির্ভুল এবং কঠোর পুনরায়তন্ত্র, এটি 000.021.01.0.অন্যান্য বেশিরভাগ উত্তর যেমন মনে হয় তেমন কিছু গ্রহণ করে না এবং সেই সাথে একই রকম মামলাগুলি প্রত্যাখ্যান করার জন্য অতিরিক্ত রেজেক্সের প্রয়োজন হয় - যেমন 0শুরুর সংখ্যা এবং একটি আইপি যা শেষ হয়.


এই তারিখ পর্যন্ত এই থ্রেডে এটিই একমাত্র সঠিক উত্তর। অন্যরা যেমন ঠিকানাগুলি মিস করে 0.0.0.0বা মিশ্র 033.033.33.033অষ্টাল / দশমিক স্বীকৃতি পছন্দ করে বা 999.999.999.999 এর মতো অনুমতি দেয়। এই রেজেক্সটি সম্পর্কে যা উত্তরের চেয়ে 10 টি অক্ষর খাটো:(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])
এনেব

4
@ টিনমারিনো আমি আপনার সম্পাদনাটি উল্টে দিয়েছি কারণ এটি 192.168.000.1 এর মতো জিনিসগুলিকে অনুমতি দিয়েছে যা কোনও বৈধ ঠিকানা নয়। যে কেউ এই উত্তরটি সম্পাদনা করতে চান, দয়া করে এ জাতীয় সমস্যা এড়াতে প্রথমে এখানে মন্তব্য করুন - আমি সাধারণত খুব দ্রুত উত্তর করি reply সর্বদা একটি সংক্ষিপ্ত / অবশ্যই আরও ভাল সমাধান খুঁজছেন।
ড্যানাইল গ্যাবেন্সকি

4
মেমোরির জন্য @ ডানাইলগ্যাবেন্সকি (এবং অন্যান্য), আপনি এটি শেষের পরিবর্তে সমাধান [01]?[0-9][0-9]?করেছেন 1[0-9]{2}|[1-9]?[0-9]কারণ আপনি 0 পছন্দ করছেন না । আবার ধন্যবাদ! আমি আপনার সমাধানটি আমার রেজেক্স মাস্টার লাগেজের মধ্যে রাখব।
টিনমারিনো

4
@tinmarino হ্যাঁ, ডট দশমিক বিন্যাসে IPv4 জন্য আদর্শ হয়ে গেছে, যদিও সরকারীভাবে নিম্নলিখিত এ দয়া বর্ণন গ্রহণ করা । বিশেষত পয়েন্ট 3, যেখানে একটি খসড়া প্রস্তাবিত হয়েছিল তবে মেয়াদ শেষ হয়ে গেছে। বৈধতার সাথে এত কঠোর হওয়ার দ্বিতীয় কারণ হ'ল ইউআইতে উপস্থাপন করা হলে আইপি'র 23-এর পরিবর্তে 023 এর মতো দশমিক সংখ্যা না থাকলে ব্যবহারকারীরা এটি ভুল / ত্রুটি করে তোলে। এটি যাচাইকরণ / সুরক্ষার ক্ষেত্রেও অসুবিধার দিকে নিয়ে যায় কারণ ডুপ্লিকেটগুলি এড়ানোর জন্য 023 টি 23 এ রূপান্তর করা প্রয়োজন ইত্যাদি জিনিসগুলি আরও ভাল করার চেষ্টা করার জন্য ধন্যবাদ!
ডানাইল গাবেনস্কি

4
আপনি এটা ফ্যাক্টরিং দ্বারা খাটো আউট করতে পারেন [0-9]জন্য 2[0-4], 1এবং খাটো মামলা। ^(?:(25[0-5]|(?:2[0-4]|1[0-9]|[1-9]|)[0-9])(\.(?!$)|$)){4}$
ক্লেটন সিং 19

12

আইপিভি 4 অ্যাড্রেস (সঠিক ক্যাপচার) 0.05.0 থেকে 255.255.255.255 এর সাথে মিলেছে আইজি নম্বরগুলি যথাযথতার সাথে মেলে এই রেজেক্সটি ব্যবহার করুন। 4 টি সংখ্যার প্রত্যেকটি একটি ক্যাপচারিং গ্রুপে সঞ্চিত থাকে, যাতে আপনি আরও প্রক্রিয়াজাতকরণের জন্য এগুলি অ্যাক্সেস করতে পারেন।

\b
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
\b

জে জি সোফট রেজেক্সবাডি লাইব্রেরি থেকে নেওয়া

সম্পাদনা: এই (\.|$)অংশটি আরও বিশ্রী মনে হচ্ছে


4
সুন্দর! যা কাজ করে বলে মনে হয় তার থেকে আরও কার্যকর পরিবর্তন করেছি: "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$){4}\b- ধন্যবাদ!
ম্যাথিউ কারটিয়ের

4
@ ম্যাথিউইয়ার্টিয়ার আপনার দক্ষ রেজেক্স প্যাটার্নটি আমার পক্ষে কাজ করে না,
R__raki__

255.255.255.000 কোনও বৈধ আইপি নয়
স্টাফেন গ্রিলন

6

আমি আইপিভি 4 অ্যাড্রেসের জন্য অনুরূপ কিছুটির সন্ধানে ছিলাম - একটি রেইজেক্স যা সাধারণভাবে ব্যবহৃত আইপি অ্যাড্রেসগুলি বৈধ হওয়া থেকে বন্ধ করে দিয়েছিল (192.168.xy, 10.xyz, 172.16.xy) তাই এটি সম্পাদন করতে নেতিবাচক চেহারা এগিয়ে ব্যবহার করে:

(?!(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.).*)
(?!255\.255\.255\.255)(25[0-5]|2[0-4]\d|[1]\d\d|[1-9]\d|[1-9])
(\.(25[0-5]|2[0-4]\d|[1]\d\d|[1-9]\d|\d)){3}

(এগুলি অবশ্যই এক লাইনে থাকা উচিত, 3 টি পৃথক লাইনে পাঠযোগ্যতার উদ্দেশ্যে ফর্ম্যাট করা) নিয়মিত প্রকাশের ভিজ্যুয়ালাইজেশন

ডিবাগেক্স ডেমো

এটি গতির জন্য অনুকূলিত নাও হতে পারে তবে কেবলমাত্র 'আসল' ইন্টারনেট ঠিকানাগুলি সন্ধান করার সময় এটি ভাল কাজ করে।

যে জিনিসগুলি (এবং হওয়া উচিত) ব্যর্থ হবে:

0.1.2.3         (0.0.0.0/8 is reserved for some broadcasts)
10.1.2.3        (10.0.0.0/8 is considered private)
172.16.1.2      (172.16.0.0/12 is considered private)
172.31.1.2      (same as previous, but near the end of that range)
192.168.1.2     (192.168.0.0/16 is considered private)
255.255.255.255 (reserved broadcast is not an IP)
.2.3.4
1.2.3.
1.2.3.256
1.2.256.4
1.256.3.4
256.2.3.4
1.2.3.4.5
1..3.4

আইপিগুলি (এবং করা উচিত) কাজ করবে:

1.0.1.0         (China)
8.8.8.8         (Google DNS in USA)
100.1.2.3       (USA)
172.15.1.2      (USA)
172.32.1.2      (USA)
192.167.1.2     (Italy)

যদি অন্য কেউ 'সাধারণ ব্যক্তিগত ঠিকানাগুলি সহ ইন্টারনেট আইপি অ্যাড্রেসগুলি বৈধকরণের সন্ধান না করে'


5

আমি মনে করি এই পোস্টটি পড়ছেন এমন অনেক লোক সহজ নিয়মিত প্রকাশের সন্ধান করবেন, এমনকি তারা কিছু প্রযুক্তিগতভাবে অবৈধ আইপি ঠিকানার সাথে মেলে। (এবং অন্য কোথাও উল্লেখ করা আছে যে কোনওভাবেই আইপি অ্যাড্রেসটি যথাযথভাবে বৈধ করার জন্য রিজেক্স সম্ভবত সঠিক সরঞ্জাম নয়))

সরান ^এবং, প্রযোজ্য ক্ষেত্রে, প্রতিস্থাপন $সঙ্গে \b, আপনি যদি লাইনের শুরুতে / শেষ মেলে না।

বেসিক নিয়মিত এক্সপ্রেশন (বিআরই) (জিএনইউ গ্রেপ, জিএনইউ শেড, এবং ভিমে পরীক্ষিত):

/^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+$/

বর্ধিত নিয়মিত এক্সপ্রেশন (ERE):

/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/

বা:

/^([0-9]+(\.|$)){4}/

পার্ল-সামঞ্জস্যপূর্ণ নিয়মিত এক্সপ্রেশন (পিসিআরই) (পার্ল 5.18 এ পরীক্ষিত):

/^\d+\.\d+\.\d+\.\d+$/

বা:

/^(\d+(\.|$)){4}/

রুবি (রুবি ২.১ এ পরীক্ষিত):

যদিও পিসিআরই হওয়ার কথা, রুবি যেকোন কারণেই এই রেজেক্সকে পার্ল 5.18 দ্বারা অনুমোদিত নয়:

/^(\d+[\.$]){4}/

এই সমস্তগুলির জন্য আমার পরীক্ষাগুলি এখানে অনলাইনে ।


3

এটি কারও চেয়ে সামান্য দীর্ঘ তবে এটি আমি আইপিভি 4 অ্যাড্রেসের সাথে মেলে ব্যবহার করি। কোনও আপস ছাড়াই সহজ

^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$

3

উপরের উত্তরগুলি বৈধ হয় তবে আইপি ঠিকানাটি যদি লাইনের শেষে না হয় এবং পাঠ্যের মধ্যে থাকে তবে .. এই রেজেেক্স এমনকি এটিতেও কাজ করবে।

কোড: '\b((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.)){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\b'

ইনপুট পাঠ্য ফাইল:

ip address 0.0.0.0 asfasf
 sad sa 255.255.255.255 cvjnzx
zxckjzbxk  999.999.999.999 jshbczxcbx
sjaasbfj 192.168.0.1 asdkjaksb
oyo 123241.24121.1234.3423 yo
yo 0000.0000.0000.0000 y
aw1a.21asd2.21ad.21d2
yo 254.254.254.254 y0
172.24.1.210 asfjas
200.200.200.200
000.000.000.000
007.08.09.210
010.10.30.110

আউটপুট পাঠ্য:

0.0.0.0
255.255.255.255
192.168.0.1
254.254.254.254
172.24.1.210
200.200.200.200

4
এটি নেতিবাচকভাবে চিহ্নিত করা হয়েছিল, যতক্ষণ না আমি এটি একটি ভোট দিয়েছি। আমি ঠিক এটি করার চেষ্টা করছিলাম (আমি স্বীকার করতে চাইলে আরও কয়েক ঘন্টা)। এটি কোনও লাইনে একাধিক ডট-কোয়াড ধারণ করে না এমন একটি লাইনে ক্যাপচার করবে না , তবে আমার ব্যবহারের ক্ষেত্রে, আমি এটি দিয়ে বেঁচে থাকতে পারি। এটি একটি দুর্দান্ত উত্তর, এটি আরও ভোট প্রয়োজন!
অ্যানাস্ট্রোফ

3

'' 'এই কোডটি আমার পক্ষে কাজ করে এবং এটাই সহজ।

এখানে আমি আইপিটির মান নিয়েছি এবং আমি এটি রেগেক্সের সাথে মিলানোর চেষ্টা করছি।

ip="25.255.45.67"    

op=re.match('(\d+).(\d+).(\d+).(\d+)',ip)

if ((int(op.group(1))<=255) and (int(op.group(2))<=255) and int(op.group(3))<=255) and (int(op.group(4))<=255)):

print("valid ip")

else:

print("Not valid")

উপরের শর্তটি যাচাই করে যে মান 4 টি অষ্টেটের 255 এর বেশি হয়ে গেছে তবে এটি বৈধ নয়। তবে শর্তটি প্রয়োগ করার আগে আমাদের তাদের পূর্ণসংখ্যায় রূপান্তর করতে হবে যেহেতু মান একটি স্ট্রিংয়ে থাকে।

গোষ্ঠী (0) মিলে যাওয়া আউটপুট প্রিন্ট করে, যেখানে গ্রুপ (1) প্রথম মিলিত মান প্রিন্ট করে এবং এখানে এটি "25" এবং আরও কিছু রয়েছে। '' '


স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম। আপনার উত্তরটি কেন ওপি ইস্যুটি সমাধান করবে সে বিষয়ে যদি আপনি কিছু শব্দ ব্যয় করতে পারেন তবে দুর্দান্ত হবে। কেবল কোডের উত্তরগুলি সাধারণত খারাপ উত্তর হয় কারণ তারা সহকর্মীদের যে কী ভুল করেছে তা বুঝতে সহায়তা করে না।
ডেভিড ভাইটালি

আপনার কোডটিতে এটি ব্যবহারকারীদের জন্য পঠনযোগ্য করার জন্য যথাযথ ইনডেন্টিং ব্যবহার করুন
সৈয়দ মেহতাব হাসান

2

আমি অন্যান্য সমস্ত উত্তর থেকে একটি রেজেেক্স নির্মাণ করতে পরিচালিত।

(25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[1-9][0-9]|[0-9]?)(\.(25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[1-9][0-9]|[0-9]?)){3}

আইইইই 802.x ইথারনেট স্ট্যান্ডার্ড অনুযায়ী আইপি বৈধতা আইপি পরিসীমা 0.xxx >>> অনুমোদিত হতে হবে না - অবৈধ আইপি। # 1. আইপি পরিসীমাটি 1.xxx থেকে শুরু করে 126.xxx >>>> কনফিগার করার অনুমতি দেওয়া যেতে পারে। # 2.IP রেঞ্জ 127.xxx >>>> অনুমতি দেওয়া উচিত নয় - অবৈধ আইপি। # 3.IP রেঞ্জ 128.xxx থেকে 223.xxx >> কনফিগার করার অনুমতি দেওয়া যেতে পারে। হ্যান্ডেল করার আরও ভাল উপায়টি নীচের মত পরামর্শ দেওয়া হয়েছে: ^ (22 [0-3] | 2 [0-1] [0-9] | [1] [0-9] [0-9]? | [1-9 ] [0-9] | [1-9]) \। (25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]? ) \। (25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \। (25 [0-4] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) $
যোগেশ আগরওয়াল


2

0 থেকে 255 পর্যন্ত সংখ্যার জন্য আমি এই রেজেক্সটি ব্যবহার করি:

(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))

উপরের রেজেক্সটি 0 থেকে 255 পর্যন্ত পূর্ণসংখ্যার সাথে মিলবে, তবে 256 এর সাথে মেলে না।

আইপিভি 4 এর জন্য আমি এই রেজেেক্সটি ব্যবহার করি:

^(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})$

এটি এই কাঠামোর মধ্যে রয়েছে: ^(N)((\.(N)){3})$যেখানে এন 0 থেকে 255 পর্যন্ত সংখ্যার সাথে মেলে ব্যবহৃত রেজেক্স।
এই রেজেক্সটি নীচের মতো আইপিটির সাথে মিলবে:

0.0.0.0
192.168.1.2

তবে নীচে যারা না:

10.1.0.256
1.2.3.
127.0.1-2.3

আইপিভি 4 সিআইডিআর (ক্লাসলেস আন্তঃ-ডোমেন রাউটিং) এর জন্য আমি এই রেজেক্সটি ব্যবহার করি:

^(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})\/(([0-9])|([12][0-9])|(3[0-2]))$

এটি এই কাঠামোর মধ্যে রয়েছে: ^(N)((\.(N)){3})\/M$যেখানে এন 0 থেকে 255 পর্যন্ত সংখ্যার সাথে মিল রাখার জন্য ব্যবহৃত রেজেক্স এবং এম থেকে 0 থেকে 32 পর্যন্ত সংখ্যার সাথে ম্যাচ করার জন্য ব্যবহৃত
রেজেক্স রয়েছে This এই রেজেক্সটি নীচের মতো সিআইডিআর সাথে মিলবে:

0.0.0.0/0
192.168.1.2/32

তবে নীচে যারা না:

10.1.0.256/16
1.2.3./24
127.0.0.1/33

এবং আইপিভি 4 সিআইডিআরের তালিকার জন্য "10.0.0.0/16", "192.168.1.1/32"আমি এই রেজেেক্সটি ব্যবহার করি:

^("(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})\/(([0-9])|([12][0-9])|(3[0-2]))")((,([ ]*)("(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})\/(([0-9])|([12][0-9])|(3[0-2]))"))*)$

এটি এই কাঠামোর মধ্যে রয়েছে: ^(“C”)((,([ ]*)(“C”))*)$যেখানে সিআইডিআর (০.০.০.০.২০১ like এর মতো) এর সাথে ম্যাচ করার জন্য ব্যবহৃত রেজেক্স।
এই রেজেক্স নীচের মতো সিআইডিআরের তালিকার সাথে মিলবে:

“10.0.0.0/16”,”192.168.1.2/32”, “1.2.3.4/32”

তবে নীচে যারা না:

“10.0.0.0/16” 192.168.1.2/32 “1.2.3.4/32”

সম্ভবত এটি সংক্ষিপ্ত হতে পারে তবে আমার পক্ষে এটি এত সূক্ষ্ম বুঝতে সহজ।

আশা করি এটা সাহায্য করবে!


তাই আপনাকে স্বাগতম, আমরা আপনার ইনপুট প্রশংসা করি! আপনি কি দয়া করে ভিন্ন রেজেক্স 'কী করছে (বিশেষত শেষটি এক) করছে তার কিছুটা ব্যাখ্যা করতে পারেন?
বি - রিয়ান

1

সাবনেট মাস্ক সহ:

^$|([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\
.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\
.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\
.([01]?\\d\\d?|2[0-4]\\d|25[0-5])
((/([01]?\\d\\d?|2[0-4]\\d|25[0-5]))?)$

1
(((25[0-5])|(2[0-4]\d)|(1\d{2})|(\d{1,2}))\.){3}(((25[0-5])|(2[0-4]\d)|(1\d{2})|(\d{1,2})))

পাঠ্যে মিলগুলি খুঁজে পেতে পরীক্ষা করুন, https://regex101.com/r/9CcMEN/2

নিম্নলিখিত আইপি ঠিকানার প্রতিটি সংখ্যায় বৈধ সংমিশ্রণ সংজ্ঞায়িত করার নিয়মগুলি রয়েছে:

  • যে কোনও এক বা দুই-অঙ্কের নম্বর।
  • তিন অঙ্কের যে কোনও নম্বর দিয়ে শুরু হবে 1

  • 2দ্বিতীয় অঙ্কের 0 মধ্য দিয়ে শুরু হলে যে কোনও তিন-সংখ্যার নম্বর 4

  • 25তৃতীয় অঙ্কের 0 মধ্য দিয়ে শুরু হলে যে কোনও তিন-অঙ্কের নম্বর 5

(((25[0-5])|(2[0-4]\d)|(1\d{2})|(\d{1,2}))\.)চারটি নেস্টেড সুপ্রেসপ্রেসনের একটি সেট দিয়ে শুরু করা যাক এবং আমরা সেগুলি বিপরীত ক্রমে দেখব। (\d{1,2})এর মাধ্যমে যে কোনও এক বা দুই-অঙ্কের নম্বর বা সংখ্যার 0সাথে মেলে 99। (যে কোনও দুটি অঙ্কের পরে) বা সংখ্যার মধ্য দিয়ে (1\d{2})শুরু হওয়া কোনও তিন-সংখ্যার সংখ্যার সাথে মেলে । মাধ্যমে সংখ্যা মেলে । মাধ্যমে সংখ্যা মেলে । এই সুব এক্সপ্রেশনগুলির প্রত্যেকটি একটির সাথে অন্য একটি স্যুপ এক্সপ্রেসের মধ্যে আবদ্ধ থাকে (যাতে চারটি সুব এক্সপ্রেসনের মধ্যে একটির মিল থাকতে হয়, সবগুলি নয়)। সংখ্যার ব্যাপ্তি মিলতে আসে এবং তারপরে পুরো সিরিজ (সমস্ত সংখ্যার অপশন প্লাস)11100199(2[0-4]\d)200249(25[0-5])250255|\..\.) আরেকটি subexpression মধ্যে আবদ্ধ এবং তিনবার ব্যবহার করে পুনরাবৃত্তি করা হয় {3}। শেষ অবধি, \.চূড়ান্ত আইপি ঠিকানা সংখ্যার সাথে মিলিয়ে যাওয়ার জন্য সংখ্যার ব্যাপ্তিটি পুনরাবৃত্তি করা হয়েছে (এবার পিছনে ছাড়াই )। 0এবং এর মধ্যে মানের মধ্যে চারটি সংখ্যার প্রতিটি সীমাবদ্ধ করে 255, এই প্যাটার্নটি সত্যই বৈধ আইপি ঠিকানাগুলির সাথে মেলে এবং অবৈধ ঠিকানাগুলি প্রত্যাখ্যান করতে পারে।

উদ্ধৃতি থেকে: বেন ফোর্টা। "নিয়মিত অভিব্যক্তি শেখা।"


আইপি ঠিকানার শুরুতে বা শেষের দিকে না থাকলে ^এবং $যথাক্রমে মেটাচার্যাক্টর ব্যবহার করা উচিত।

^(((25[0-5])|(2[0-4]\d)|(1\d{2})|(\d{1,2}))\.){3}(((25[0-5])|(2[0-4]\d)|(1\d{2})|(\d{1,2})))$

পাঠ্যে মিলগুলি খুঁজে পেতে পরীক্ষা করুন, https://regex101.com/r/uAP31A/1


1

আমি এটিকে কিছুটা সহজ এবং খাটো করার চেষ্টা করেছি।

^(([01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}([01]?\d{1,2}|2[0-4]\d|25[0-5])$

আপনি যদি জাভা / কোটলিন খুঁজছেন:

^(([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d{1,2}|2[0-4]\\d|25[0-5])$

যদি কেউ জানতে চায় যে এটি এখানে কীভাবে কাজ করে তবে তার ব্যাখ্যা। এটা সত্যিই খুব সহজ। একবার চেষ্টা করে দেখুন: পি:

 1. ^.....$: '^' is the starting and '$' is the ending.

 2. (): These are called a group. You can think of like "if" condition groups.

 3. |: 'Or' condition - as same as most of the programming languages.

 4. [01]?\d{1,2}: '[01]' indicates one of the number between 0 and 1. '?' means '[01]' is optional. '\d' is for any digit between 0-9 and '{1,2}' indicates the length can be between 1 and 2. So here the number can be 0-199.

 5. 2[0-4]\d: '2' is just plain 2. '[0-4]' means a number between 0 to 4. '\d' is for any digit between 0-9. So here the number can be 200-249.

 6. 25[0-5]: '25' is just plain 25. '[0-5]' means a number between 0 to 5. So here the number can be 250-255.

 7. \.: It's just plan '.'(dot) for separating the numbers.

 8. {3}: It means the exact 3 repetition of the previous group inside '()'.

 9. ([01]?\d{1,2}|2[0-4]\d|25[0-5]): Totally same as point 2-6

গাণিতিকভাবে এটির মতো:

(0-199 OR 200-249 OR 250-255).{Repeat exactly 3 times}(0-199 OR 200-249 OR 250-255)

সুতরাং, আপনি সাধারণত দেখতে পাচ্ছেন এটি হ'ল আইপি ঠিকানার প্যাটার্ন। আমি আশা করি এটি নিয়মিত এক্সপ্রেশনকে কিছুটা বুঝতে সহায়তা করে। : পি


1

আমি এটিকে কিছুটা সহজ ও খাটো করার চেষ্টা করেছি।

^ (([01]? \ D {1,2} | 2 [0-4] \ d | 25 [0-5])।) {3} ([01]? \ D {1,2} | 2 [0-4] \ d | 25 [0-5]) $

আপনি যদি জাভা / কোটলিন খুঁজছেন:

^ (([01]? \ D {1,2} | 2 [0-4] \ d | 25 [0-5]) \।) {3} ([01]? \ D {1,2} | 2 [0-4] \ d | 25 [0-5]) $

যদি কেউ জানতে চায় যে এটি এখানে কীভাবে কাজ করে তবে তার ব্যাখ্যা। এটা সত্যিই খুব সহজ। একবার চেষ্টা করে দেখুন: পি:

 1. ^.....$: '^' is the starting and '$' is the ending.

 2. (): These are called a group. You can think of like "if" condition groups.

 3. |: 'Or' condition - as same as most of the programming languages.

 4. [01]?\d{1,2}: '[01]' indicates one of the number between 0 and 1. '?' means '[01]' is optional. '\d' is for any digit between 0-9 and '{1,2}' indicates the length can be between 1 and 2. So here the number can be 0-199.

 5. 2[0-4]\d: '2' is just plain 2. '[0-4]' means a number between 0 to 4. '\d' is for any digit between 0-9. So here the number can be 200-249.

 6. 25[0-5]: '25' is just plain 25. '[0-5]' means a number between 0 to 5. So here the number can be 250-255.

 7. \.: It's just plan '.'(dot) for separating the numbers.

 8. {3}: It means the exact 3 repetition of the previous group inside '()'.

 9. ([01]?\d{1,2}|2[0-4]\d|25[0-5]): Totally same as point 2-6

গাণিতিকভাবে এটির মতো:

(0-199 OR 200-249 OR 250-255).{Repeat exactly 3 times}(0-199 OR 200-249 OR 250-255)

সুতরাং, আপনি সাধারণত দেখতে পাচ্ছেন এটি হ'ল আইপি ঠিকানার প্যাটার্ন। আমি আশা করি এটি নিয়মিত এক্সপ্রেশনকে কিছুটা বুঝতে সহায়তা করে। : পি


0
    const char*ipv4_regexp = "\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."
    "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."
    "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."
    "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b";

আমি জে জিএসফ্ট রেগেক্সবাডি লাইব্রেরি থেকে নেওয়া নিয়মিত এক্সপ্রেশনটি সি ভাষায় (রেজিকম্প / রিজেক্সেক) অভিযোজিত করেছি এবং আমি খুঁজে পেয়েছি এটি কার্যকর হয় তবে লিনাক্সের মতো কিছু ওএসে কিছুটা সমস্যা আছে। সেই নিয়মিত এক্সপ্রেশনটি 192.168.100.009 এর মতো আইপিভি 4 ঠিকানা গ্রহণ করে যেখানে লিনাক্সে 009কে অক্টাল মান হিসাবে বিবেচনা করা হয় তাই ঠিকানাটি আপনি ভাবেননি। আমি নিয়মিত প্রকাশটি অনুসরণ করে পরিবর্তন করেছি:

    const char* ipv4_regex = "\\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\."
           "(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\."
           "(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\."
           "(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\b";

সেই নিয়মিত এক্সপ্রেশনটি এখনই 192.168.100.009 ব্যবহার করা কোনও বৈধ ipv4 ঠিকানা নয় যখন 192.168.100.9 ঠিক আছে।

আমি মাল্টিকাস্ট অ্যাড্রেসের জন্যও একটি নিয়মিত অভিব্যক্তি পরিবর্তন করেছি এবং এটি নিম্নলিখিত:

    const char* mcast_ipv4_regex = "\\b(22[4-9]|23[0-9])\\."
                        "(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\."
                        "(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]?)\\."
                        "(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\b";

আমি মনে করি আপনার অ্যাপ্লিকেশন বিকাশের জন্য আপনি যে ভাষাটি ব্যবহার করছেন তা নিয়মিত অভিব্যক্তিটি আপনাকে মানিয়ে নিতে হবে

আমি জাভাতে একটি উদাহরণ রেখেছি:

    package utility;

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class NetworkUtility {

        private static String ipv4RegExp = "\\b(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d?)\\b";

        private static String ipv4MulticastRegExp = "2(?:2[4-9]|3\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d?|0)){3}";

        public NetworkUtility() {

        }

        public static boolean isIpv4Address(String address) {
            Pattern pattern = Pattern.compile(ipv4RegExp);
            Matcher matcher = pattern.matcher(address);

            return matcher.matches();
        }

        public static boolean isIpv4MulticastAddress(String address) {
             Pattern pattern = Pattern.compile(ipv4MulticastRegExp);
             Matcher matcher = pattern.matcher(address);

             return matcher.matches();
        }
    }

0
-bash-3.2$ echo "191.191.191.39" | egrep 
  '(^|[^0-9])((2([6-9]|5[0-5]?|[0-4][0-9]?)?|1([0-9][0-9]?)?|[3-9][0-9]?|0)\.{3}
     (2([6-9]|5[0-5]?|[0-4][0-9]?)?|1([0-9][0-9]?)?|[3-9][0-9]?|0)($|[^0-9])'

>> 191.191.191.39

(এটি একটি ডিএফএ যা পুরো অ্যাডারের স্পেসের সাথে মেলে (ব্রডকাস্টগুলি, ইত্যাদি সহ)) আর কিছুই নয়।



0

আমি এই নমুনাটিকে খুব দরকারী বলে মনে করেছি, তদ্ব্যতীত এটি বিভিন্ন আইপিভি 4 স্বরলিপিগুলির অনুমতি দেয়।

পাইথন ব্যবহার করে নমুনা কোড:

    def is_valid_ipv4(ip4):
    """Validates IPv4 addresses.
    """
    import re
    pattern = re.compile(r"""
        ^
        (?:
          # Dotted variants:
          (?:
            # Decimal 1-255 (no leading 0's)
            [3-9]\d?|2(?:5[0-5]|[0-4]?\d)?|1\d{0,2}
          |
            0x0*[0-9a-f]{1,2}  # Hexadecimal 0x0 - 0xFF (possible leading 0's)
          |
            0+[1-3]?[0-7]{0,2} # Octal 0 - 0377 (possible leading 0's)
          )
          (?:                  # Repeat 0-3 times, separated by a dot
            \.
            (?:
              [3-9]\d?|2(?:5[0-5]|[0-4]?\d)?|1\d{0,2}
            |
              0x0*[0-9a-f]{1,2}
            |
              0+[1-3]?[0-7]{0,2}
            )
          ){0,3}
        |
          0x0*[0-9a-f]{1,8}    # Hexadecimal notation, 0x0 - 0xffffffff
        |
          0+[0-3]?[0-7]{0,10}  # Octal notation, 0 - 037777777777
        |
          # Decimal notation, 1-4294967295:
          429496729[0-5]|42949672[0-8]\d|4294967[01]\d\d|429496[0-6]\d{3}|
          42949[0-5]\d{4}|4294[0-8]\d{5}|429[0-3]\d{6}|42[0-8]\d{7}|
          4[01]\d{8}|[1-3]\d{0,9}|[4-9]\d{0,8}
        )
        $
    """, re.VERBOSE | re.IGNORECASE)
    return pattern.match(ip4) <> None

0
((\.|^)(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0$)){4}

এই রেজেক্স 08.8.8.8 বা 8.08.8.8 বা 8.8.08.8 বা 8.8.8.08 গ্রহণ করবে না


এটি উদাহরণস্বরূপ 127.0.0.1 এবং 0.0.0.0
22

^ ((\। | ^) (25 [0-5] | 2 [0-4] [0-9] | 1 [0-9] [0-9] | [1-9] [0-9] ? | [0-9]? | 0)) ((\। | ^) (25 [0-5] | 2 [0-4] [0-9] | 1 [0-9] [0-9] | [1-9] [0-9]? | 0)) {2}। ((25 [0-5] | 2 [0-4] [0-9] | 1 [0-9] [0- 9] | [1-9] [0-9]? | 0) $)
সুডিসট্যাক

4
অনুমান অনুসারে নেতৃস্থানীয় শূন্যগুলি প্রত্যাখ্যান করা ঠিক।
জন হাগল্যান্ড 3

0

অঙ্ক ব্যতীত অন্য কোনও চরিত্রের (আইপির পিছনে বা সামনে) আইপি মুড়িয়ে ফেলা অবধি বৈধ আইপি ঠিকানাগুলি সন্ধান করে। 4 পশ্চাদপসরণগুলি তৈরি করা হয়েছে: $ + {প্রথম}। $ + {দ্বিতীয়}। $ + {তৃতীয়}। $ + {সামনে {

Find String:
#any valid IP address
(?<IP>(?<![\d])(?<first>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<second>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<third>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<forth>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))(?![\d]))
#only valid private IP address RFC1918
(?<IP>(?<![\d])(:?(:?(?<first>10)[\.](?<second>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5])))|(:?(?<first>172)[\.](?<second>(:?1[6-9])|(:?2[0-9])|(:?3[0-1])))|(:?(?<first>192)[\.](?<second>168)))[\.](?<third>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<forth>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))(?![\d]))

Notepad++ Replace String Option 1: Replaces the whole IP (NO Change):
$+{IP}

Notepad++ Replace String Option 2: Replaces the whole IP octect by octect (NO Change)
$+{first}.$+{second}.$+{third}.$+{forth}

Notepad++ Replace String Option 3: Replaces the whole IP octect by octect (replace 3rd octect value with 0)
$+{first}.$+{second}.0.$+{forth}
NOTE: The above will match any valid IP including 255.255.255.255 for example and change it to 255.255.0.255 which is wrong and not very useful of course.

প্রতিটি অক্টেক্টের অংশকে একটি আসল মান দিয়ে প্রতিস্থাপন করা যায় তবে আপনি নিজের অনুসন্ধান তৈরি করতে পারেন এবং প্রতিস্থাপন করতে পারেন যা টেক্সট ফাইলগুলিতে আইপি সংশোধন করতে প্রকৃত উপকারী:

for example replace the first octect group of the original Find regex above:
(?<first>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))
with
(?<first>10)

and
(?<second>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))
with
(?<second>216)
and you are now matching addresses starting with first octect 192 only

Find on notepad++:
(?<IP>(?<![\d])(?<first>10)[\.](?<second>216)[\.](?<third>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<forth>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))(?![\d]))

আপনি এখনও আগের মতো একই ফ্যাশনে ব্যাক-রেফারি গ্রুপগুলি ব্যবহার করে প্রতিস্থাপন সম্পাদন করতে পারেন।

উপরের সাথে কীভাবে মিলে গেছে তার একটি ধারণা পেতে পারেন:

cat ipv4_validation_test.txt
Full Match:
0.0.0.1
12.108.1.34
192.168.1.1
10.249.24.212
10.216.1.212
192.168.1.255
255.255.255.255
0.0.0.0


Partial Match (IP Extraction from line)
30.168.1.0.1
-1.2.3.4
sfds10.216.24.23kgfd
da11.15.112.255adfdsfds
sfds10.216.24.23kgfd


NO Match
1.1.1.01
3...3
127.1.
192.168.1..
192.168.1.256
da11.15.112.2554adfdsfds
da311.15.112.255adfdsfds

গ্রেপ ব্যবহার করে আপনি নীচের ফলাফলগুলি দেখতে পারেন:

From grep:
grep -oP '(?<IP>(?<![\d])(?<first>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<second>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<third>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<forth>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))(?![\d]))' ipv4_validation_test.txt
0.0.0.1
12.108.1.34
192.168.1.1
10.249.24.212
10.216.1.212
192.168.1.255
255.255.255.255
0.0.0.0
30.168.1.0
1.2.3.4
10.216.24.23
11.15.112.255
10.216.24.23


grep -P '(?<IP>(?<![\d])(?<first>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<second>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<third>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<forth>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))(?![\d]))' ipv4_validation_test.txt
0.0.0.1
12.108.1.34
192.168.1.1
10.249.24.212
10.216.1.212
192.168.1.255
255.255.255.255
0.0.0.0
30.168.1.0.1
-1.2.3.4
sfds10.216.24.23kgfd
da11.15.112.255adfdsfds
sfds10.216.24.23kgfd


#matching ip addresses starting with 10.216
grep -oP '(?<IP>(?<![\d])(?<first>10)[\.](?<second>216)[\.](?<third>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))[\.](?<forth>(:?\d)|(:?[1-9]\d)|(:?1\d{2})|(:?2[0-4]\d)|(:?25[0-5]))(?![\d]))' ipv4_validation_test.txt
10.216.1.212
10.216.24.23
10.216.24.23

0

আইপিভি 4 ঠিকানা একটি খুব জটিল জিনিস।

দ্রষ্টব্য : ইনডেন্টেশন এবং আস্তরণ কেবল চিত্রের উদ্দেশ্যে এবং বাস্তব RegEx এ বিদ্যমান নেই।

\b(
  ((
    (2(5[0-5]|[0-4][0-9])|1[0-9]{2}|[1-9]?[0-9])
  |
    0[Xx]0*[0-9A-Fa-f]{1,2}
  |
    0+[1-3]?[0-9]{1,2}
  )\.){1,3}
  (
    (2(5[0-5]|[0-4][0-9])|1[0-9]{2}|[1-9]?[0-9])
  |
    0[Xx]0*[0-9A-Fa-f]{1,2}
  |
    0+[1-3]?[0-9]{1,2}
  )
|
  (
    [1-3][0-9]{1,9}
  |
    [1-9][0-9]{,8}
  |
    (4([0-1][0-9]{8}
      |2([0-8][0-9]{7}
        |9([0-3][0-9]{6}
          |4([0-8][0-9]{5}
            |9([0-5][0-9]{4}
              |6([0-6][0-9]{3}
                |7([0-1][0-9]{2}
                  |2([0-8][0-9]{1}
                    |9([0-5]
    ))))))))))
  )
|
  0[Xx]0*[0-9A-Fa-f]{1,8}
|
  0+[1-3]?[0-7]{,10}
)\b

এই আইপিভি 4 ঠিকানাগুলি উপরের রেজিএক্স দ্বারা বৈধ করা হয়েছে।

127.0.0.1
2130706433
0x7F000001
017700000001
0x7F.0.0.01 # Mixed hex/dec/oct
000000000017700000001 # Have as many leading zeros as you want
0x0000000000007F000001 # Same as above
127.1
127.0.1

এগুলি প্রত্যাখ্যান করা হয়।

256.0.0.1
192.168.1.099 # 099 is not a valid number
4294967296 # UINT32_MAX + 1
0x100000000
020000000000

0

^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.)){3}+((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))$


উপরে আইপি ঠিকানার জন্য রেজিেক্স হবে: 221.234.000.112 এছাড়াও 221.234.0.112, 221.24.03.112, 221.234.0.1 এর জন্য


আপনি উপরের মতো সমস্ত ধরণের ঠিকানা কল্পনা করতে পারেন


0

আমি পিসিআরই এবং defineকীওয়ার্ডটি ব্যবহার করব :

/^
 ((?&byte))\.((?&byte))\.((?&byte))\.((?&byte))$
 (?(DEFINE)
     (?<byte>25[0-5]|2[0-4]\d|[01]?\d\d?))
/gmx

ডেমো: https://regex101.com/r/IB7j48/2

এর কারণ হ'ল (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)চারবার প্যাটার্নটি পুনরাবৃত্তি করা এড়ানো । অন্যান্য সমাধান যেমন নীচের দিকের মতো একটি ভাল কাজ করে তবে এটি প্রতিটি গ্রুপকে ক্যাপচার করে না কারণ এটি অনেকের দ্বারা অনুরোধ করা হবে।

/^((\d+?)(\.|$)){4}/ 

4 টি ক্যাপচার গ্রুপ থাকার একমাত্র অন্য উপায় হ'ল চারবার প্যাটার্নটি পুনরাবৃত্তি করা:

/^(?<one>\d+)\.(?<two>\d+)\.(?<three>\d+)\.(?<four>\d+)$/

পার্লে একটি আইপিভি 4 ক্যাপচার করা তাই খুব সহজ

$ echo "Hey this is my IP address 138.131.254.8, bye!" | \
  perl -ne 'print "[$1, $2, $3, $4]" if \
    /\b((?&byte))\.((?&byte))\.((?&byte))\.((?&byte))
     (?(DEFINE)
        \b(?<byte>25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))
    /x'

[138, 131, 254, 8]

0

আমি কল্পনা করতে পারি সবচেয়ে সুনির্দিষ্ট, সোজা এবং কমপ্যাক্ট IPv4 regexp

^(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$

তবে এর অভিনয় / দক্ষতা সম্পর্কে কী ... দুঃখিত আমি জানি না, কে যত্ন করে?


0

এটা চেষ্টা কর:

\b(([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.(2[0-5][0-5]|1[0-9][0-9]|[1-9][0-9]|[1-9]))\b

0
ip address can be from 0.0.0.0 to 255.255.255.255

(((0|1)?[0-9][0-9]?|2[0-4][0-9]|25[0-5])[.]){3}((0|1)?[0-9][0-9]?|2[0-4][0-9]|25[0-5])$

(0|1)?[0-9][0-9]? - checking value from 0 to 199
2[0-4][0-9]- checking value from 200 to 249
25[0-5]- checking value from 250 to 255
[.] --> represent verify . character 
{3} --> will match exactly 3
$ --> end of string

0

নীচে আইপি-ঠিকানাটি বৈধ করার জন্য রেজেক্স এক্সপ্রেশন রয়েছে।

^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.