উত্তর:
আপনি নিম্নলিখিত নিয়মিত এক্সপ্রেশন পৃথকভাবে বা একটি যৌথ OR প্রকাশের সাথে সংযুক্ত করে ব্যবহার করতে পারেন।
ValidIpAddressRegex = "^(([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])$";
ValidHostnameRegex = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$";
ValidIpAddressRegex বৈধ আইপি ঠিকানা এবং ValidHostnameRegex বৈধ হোস্টের নামের সাথে মেলে । আপনি যে ভাষাটি ব্যবহার করেন তার উপর নির্ভর করে with দিয়ে পালানো যেতে পারে \
আরএফসি 1123 অনুসারে ValidHostnameRegex বৈধ । মূলত, আরএফসি 952 নির্দিষ্ট করেছে যে হোস্টনাম বিভাগগুলি কোনও অঙ্ক দিয়ে শুরু করতে পারে না।
http://en.wikipedia.org/wiki/Hostname
আরএফসি 952 এ হোস্টনামের মূল স্পেসিফিকেশন , বাধ্যতামূলক যে লেবেলগুলি একটি অঙ্ক বা হাইফেন দিয়ে শুরু করতে পারে না এবং হাইফেন দিয়ে শেষ করা উচিত নয়। যাইহোক, পরবর্তী স্পেসিফিকেশন ( আরএফসি 1123 ) অঙ্কগুলি দিয়ে শুরু করার জন্য হোস্টনামের লেবেলগুলিকে অনুমতি দিয়েছে।
Valid952HostnameRegex = "^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$";
éxämplè.com
= xn--xmpl-loa1ab.com
) এএসসিআই রূপে রূপান্তরিত করতে হবে এবং তারপরে যাচাইকরণ করতে হবে ।
123.456.789.0
এবং এটি বলছে এটি একটি বৈধ হোস্টনাম।
স্মিংকের হোস্টনাম রেজেেক্স একটি হোস্টনামের মধ্যে পৃথক লেবেলের দৈর্ঘ্যের সীমাবদ্ধতা পালন করে না। একটি বৈধ হোস্টনামের মধ্যে প্রতিটি লেবেল 63 অক্টোটের বেশি দীর্ঘ হতে পারে।
ValidHostnameRegex = "^ ([ZA-Z0-9] | [ZA-Z0-9] [ZA-Z0-9 \ -] {0,61} [ZA-Z0-9]) \ (\ ([ZA-Z0-9] |। [ZA-Z0-9] [ZA-Z0-9 \ -] {0,61} [ZA-Z0-9])) * $ "
মনে রাখবেন যে প্রথম লাইনের শেষে (উপরে) ব্যাকস্ল্যাশটি দীর্ঘ লাইনের বিভাজনের জন্য ইউনিক্স শেল সিনট্যাক্স। এটি নিজেই নিয়মিত প্রকাশের অংশ নয়।
এখানে কেবল একটি একক লাইনে নিয়মিত প্রকাশ হয়:
^ ([ZA-Z0-9] | [ZA-Z0-9] [ZA-Z0-9 \ -] {0,61} [ZA-Z0-9]) (\। ([zA-Z0-9] | [zA-Z0-9] [zA-Z0-9 \ -] {0,61} [zA-Z0-9])) * $
আপনার পৃথকভাবেও পরীক্ষা করা উচিত যে হোস্টনামের মোট দৈর্ঘ্য 255 টি অক্ষরের বেশি হওয়া উচিত নয় । আরও তথ্যের জন্য, দয়া করে আরএফসি -952 এবং আরএফসি -1123 এর সাথে পরামর্শ করুন।
/^[a-z\d]([a-z\d\-]{0,61}[a-z\d])?(\.[a-z\d]([a-z\d\-]{0,61}[a-z\d])?)*$/i
একটি বৈধ আইপি ঠিকানার সাথে মেলে নিম্নলিখিত রেজেেক্সটি ব্যবহার করুন:
(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]?)){3}
পরিবর্তে:
([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])(\.([01]?[0-9][0-9]?|2[0-4][0-9]|25[0-5])){3}
অনেকগুলি রেজেক্স ইঞ্জিন OR
ক্রমের প্রথম সম্ভাবনার সাথে মেলে । উদাহরণস্বরূপ, নিম্নলিখিত রেজেক্স ব্যবহার করে দেখুন:
10.48.0.200
([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*
বনাম([a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]|[a-zA-Z0-9])(\.([a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])|[a-zA-Z0-9]))*
+
পরিবর্তে শেষে ব্যবহার করুন *
।
আমি শীর্ষ পোস্টটি সম্পাদনা করতে সক্ষম বলে মনে হচ্ছে না, তাই আমি আমার উত্তর এখানে যুক্ত করব।
হোস্টনামের জন্য - সহজ উত্তরের জন্য, উদাহরণস্বরূপ এখানে - http: //www.linuxinsight.com/how_to_grep_for_ip_add્રેસ_used_the_gnu_egrep_utility.html
egrep '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'
যদিও মামলাটি মুষ্টি অক্টেটে 0 এর মতো মানগুলির জন্য অ্যাকাউন্ট করে না এবং 254 (আইপি অ্যাড্রেস) বা 255 (নেটমাস্ক) এর চেয়ে বেশি মানের। বিবৃতি সাহায্য করবে যদি একটি অতিরিক্ত হতে পারে।
আইনী ডিএনএস হোস্টনামের শর্ত হিসাবে, আপনি কেবল ইন্টারনেট হোস্টনামের জন্য পরীক্ষা করছেন (এবং ইন্ট্রনেট নয়), আমি নীচে স্নিপড লিখেছি, শেল / পিএইচপি মিশ্রিত তবে এটি কোনও নিয়মিত অভিব্যক্তি হিসাবে প্রযোজ্য উচিত।
প্রথমে আইটিএফ ওয়েবসাইটে যান, আইনি স্তরের 1 ডোমেন নামের একটি তালিকা ডাউনলোড করুন এবং পার্স করুন:
tld=$(curl -s http://data.iana.org/TLD/tlds-alpha-by-domain.txt | sed 1d | cut -f1 -d'-' | tr '\n' '|' | sed 's/\(.*\)./\1/')
echo "($tld)"
এটি আপনাকে পুনরায় কোডের একটি দুর্দান্ত অংশ দেবে যা শীর্ষস্থানীয় ডোমেন নামের বৈধতার জন্য পরীক্ষা করে।
তারপরে এখানে পাওয়া নির্দেশিকাগুলি অনুসারে প্রকাশের প্রথম অংশ যুক্ত করুন - http: //www.domainit.com/support/faq.mhtml?category=Domain_FAQ&question=9 (কোনও বর্ণানুক্রমিক সংমিশ্রণ এবং '-' চিহ্ন, ড্যাশের মধ্যে থাকা উচিত নয়) একটি অক্টেটের শুরু বা শেষ।
(([a-z0-9]+|([a-z0-9]+[-]+[a-z0-9]+))[.])+
তারপরে এটি সব একসাথে রাখুন (পিএইচপি প্রিগ_ম্যাচ উদাহরণ):
$pattern = '/^(([a-z0-9]+|([a-z0-9]+[-]+[a-z0-9]+))[.])+(AC|AD|AE|AERO|AF|AG|AI|AL|AM|AN|AO|AQ|AR|ARPA|AS|ASIA|AT|AU|AW|AX|AZ|BA|BB|BD|BE|BF|BG|BH|BI|BIZ|BJ|BM|BN|BO|BR|BS|BT|BV|BW|BY|BZ|CA|CAT|CC|CD|CF|CG|CH|CI|CK|CL|CM|CN|CO|COM|COOP|CR|CU|CV|CX|CY|CZ|DE|DJ|DK|DM|DO|DZ|EC|EDU|EE|EG|ER|ES|ET|EU|FI|FJ|FK|FM|FO|FR|GA|GB|GD|GE|GF|GG|GH|GI|GL|GM|GN|GOV|GP|GQ|GR|GS|GT|GU|GW|GY|HK|HM|HN|HR|HT|HU|ID|IE|IL|IM|IN|INFO|INT|IO|IQ|IR|IS|IT|JE|JM|JO|JOBS|JP|KE|KG|KH|KI|KM|KN|KP|KR|KW|KY|KZ|LA|LB|LC|LI|LK|LR|LS|LT|LU|LV|LY|MA|MC|MD|ME|MG|MH|MIL|MK|ML|MM|MN|MO|MOBI|MP|MQ|MR|MS|MT|MU|MUSEUM|MV|MW|MX|MY|MZ|NA|NAME|NC|NE|NET|NF|NG|NI|NL|NO|NP|NR|NU|NZ|OM|ORG|PA|PE|PF|PG|PH|PK|PL|PM|PN|PR|PRO|PS|PT|PW|PY|QA|RE|RO|RS|RU|RW|SA|SB|SC|SD|SE|SG|SH|SI|SJ|SK|SL|SM|SN|SO|SR|ST|SU|SV|SY|SZ|TC|TD|TEL|TF|TG|TH|TJ|TK|TL|TM|TN|TO|TP|TR|TRAVEL|TT|TV|TW|TZ|UA|UG|UK|US|UY|UZ|VA|VC|VE|VG|VI|VN|VU|WF|WS|XN|XN|XN|XN|XN|XN|XN|XN|XN|XN|XN|YE|YT|YU|ZA|ZM|ZW)[.]?$/i';
if (preg_match, $pattern, $matching_string){
... do stuff
}
আপনি যে স্ট্রিংটি পরীক্ষা করেছেন তা 256 টির চেয়ে কম অক্ষরের চেক করতে আপনি যদি একটি বিবৃতি যুক্ত করতে পারেন - http://www.ops.ietf.org/lists/nameroppers/nameroppers.2003/msg00964.html
এটি লক্ষণীয় যে বেশিরভাগ ভাষার জন্য লাইব্রেরি রয়েছে যা আপনার জন্য এটি করে, প্রায়শই স্ট্যান্ডার্ড লাইব্রেরিতে নির্মিত। এবং এই লাইব্রেরিগুলি কোডের চেয়ে অনেক বেশি আপডেট হওয়ার সম্ভাবনা রয়েছে যা আপনি চার বছর আগে স্ট্যাক ওভারফ্লো উত্তরটি অনুলিপি করে রেখেছিলেন এবং ভুলে গিয়েছিলেন। এবং অবশ্যই তারা সাধারণত কয়েকটি গোষ্ঠীর সাথে ম্যাচ দেওয়ার পরিবর্তে ঠিকানাটিকে কিছু ব্যবহারযোগ্য আকারে পার্স করবে।
উদাহরণস্বরূপ, আইপিভি 4 সনাক্তকরণ এবং পার্সিং (POSIX) সি:
#include <arpa/inet.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
for (int i=1; i!=argc; ++i) {
struct in_addr addr = {0};
printf("%s: ", argv[i]);
if (inet_pton(AF_INET, argv[i], &addr) != 1)
printf("invalid\n");
else
printf("%u\n", addr.s_addr);
}
return 0;
}
স্পষ্টতই, আপনি যদি চ্যাট বার্তায় সমস্ত বৈধ ঠিকানাগুলি খুঁজে পেতে চেষ্টা করেন তবে এই জাতীয় ফাংশনগুলি কাজ করবে না - তবে সেখানেও, সম্ভাব্য মিলগুলি খুঁজে পেতে একটি সহজ তবে অত্যধিক alousর্ষাকৃত রেজেক্স ব্যবহার করা আরও সহজ হতে পারে এবং তারপরে এটি ব্যবহার করুন তাদের পার্স করার জন্য লাইব্রেরি।
উদাহরণস্বরূপ, পাইথনে:
>>> import ipaddress
>>> import re
>>> msg = "My address is 192.168.0.42; 192.168.0.420 is not an address"
>>> for maybeip in re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', msg):
... try:
... print(ipaddress.ip_address(maybeip))
... except ValueError:
... pass
def isValidHostname(hostname):
if len(hostname) > 255:
return False
if hostname[-1:] == ".":
hostname = hostname[:-1] # strip exactly one dot from the right,
# if present
allowed = re.compile("(?!-)[A-Z\d-]{1,63}(?<!-)$", re.IGNORECASE)
return all(allowed.match(x) for x in hostname.split("."))
আমি মনে করি এটিই সেরা আইপি বৈধতা রেগেক্স। একবার এটি পরীক্ষা করে দেখুন !!!
^(([01]?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))\.){3}([01]?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))$
/^(?:[a-zA-Z0-9]+|[a-zA-Z0-9][-a-zA-Z0-9]+[a-zA-Z0-9])(?:\.[a-zA-Z0-9]+|[a-zA-Z0-9][-a-zA-Z0-9]+[a-zA-Z0-9])?$/
এখানে একটি রেইজেক্স রয়েছে যা আমি পিঁপিতে একটি প্রক্সি হোস্ট আইপি বা ANT_OPTS এর মধ্যে হোস্টনামটি পেতে ব্যবহার করেছি। এটি প্রক্সি আইপি প্রাপ্ত করার জন্য ব্যবহার করা হয়েছিল যাতে আমি কাঁটাযুক্ত জেভিএমের জন্য প্রক্সি কনফিগার করার আগে একটি পিঁপড়া "ইশ্রিচিয়েবল" পরীক্ষা চালাতে পারি।
^.*-Dhttp\.proxyHost=(\w{1,}\.\w{1,}\.\w{1,}\.*\w{0,})\s.*$
\w
ঠিক সেখানে, এটি আইপি ক্যাপচার করবে না, নির্দিষ্ট পরিস্থিতিতে কেবল হোস্টনেম।
আমি দেখতে পেয়েছি এটি আইপি অ্যাড্রেসের জন্য বেশ ভাল কাজ করে। এটি শীর্ষ উত্তরের মতো বৈধতা দেয় তবে এটি আইপি বিচ্ছিন্ন হওয়ার বিষয়টিও নিশ্চিত করে তাই আইপি-র পরে বা তার আগে কোনও পাঠ্য বা বেশি সংখ্যা / দশমিক নয়।
(?! <\ এস)? (: (: \ ঘ | [1-9] \ ঘ | 1 \ ঘ \ ঘ | 2 [0-4] \ ঘ | 25 [0-5]) \ b হল |। \ খ) {7} (?! \ এস)
AddressRegex = "^(ftp|http|https):\/\/([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:[0-9]{1,5})$";
HostnameRegex = /^(ftp|http|https):\/\/([a-z0-9]+\.)?[a-z0-9][a-z0-9-]*((\.[a-z]{2,6})|(\.[a-z]{2,6})(\.[a-z]{2,6}))$/i
এই পুনরায় কেবল এই ধরণের বৈধতার জন্য ব্যবহৃত হয়
কেবলমাত্র http://www.kk.com http://www.kk.co.in এ কাজ করুন
জন্য কাজ করে না
এটা চেষ্টা কর:
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
এটা আমার ক্ষেত্রে কাজ করে।
আইপি অ্যাড্রেস সম্পর্কিত, এটি প্রদর্শিত হবে যে নেতৃস্থানীয় শূন্যগুলি অন্তর্ভুক্ত করা হবে কিনা তা নিয়ে কিছুটা বিতর্ক রয়েছে। এটি একসময় সাধারণ অনুশীলন ছিল এবং সাধারণত গৃহীত হয়, তাই আমি যুক্তি দিয়ে বলব যে বর্তমানের পছন্দ বিবেচনা না করে এগুলি বৈধ হিসাবে চিহ্নিত করা উচিত । স্ট্রিংটির আগে এবং পরে পাঠ্যটি বৈধ হওয়া উচিত কিনা এবং সে সম্পর্কেও আবার কিছুটা অস্পষ্টতা রয়েছে I 1.2.3.4 একটি বৈধ আইপি তবে 1.2.3.4.5 হয় না এবং 1.2.3.4 অংশ বা 2.3.4.5 অংশটি কোনও ম্যাচের ফলাফল হতে পারে। কিছু উদ্বেগ এই অভিব্যক্তি দিয়ে পরিচালনা করা যেতে পারে:
grep -E '(^|[^[:alnum:]+)(([0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.){3}([0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])([^[:alnum:]]|$)'
এখানে দুর্ভাগ্যজনক অংশটি হ'ল সত্য যে রেজেক্স অংশটি যা একটি অক্টেটকে বৈধতা দেয় তা অনেকগুলি প্রস্তাবিত সমাধানে সত্য হিসাবে পুনরাবৃত্তি হয়। যদিও এটি প্যাটার্নের উদাহরণগুলির চেয়ে ভাল তবে পুনরাবৃত্তি সম্পূর্ণরূপে মুছে ফেলা যায় যদি সাবরেটাইনগুলি ব্যবহার করা হচ্ছে রেজেক্সে সমর্থিত হয়। পরবর্তী উদাহরণটি সেই ফাংশনগুলিকে -P
স্যুইচ করে সক্ষম করে grep
এবং লুকোহেড এবং লুকবিহিন কার্যকারিতার সুবিধা গ্রহণ করে। (আমি নির্বাচিত ফাংশনের নামটি অক্টেটের জন্য 'ও' I নাম হিসাবে আমি 'অকটেট' ব্যবহার করতে পারতাম তবে ছড়িয়ে যেতে চাইতাম))
grep -P '(?<![\d\w\.])(?<o>([0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]))(\.\g<o>){3}(?![\d\w\.])'
আইট ঠিকানাগুলি বাক্য আকারে পাঠ্যযুক্ত কোনও ফাইলে আইপি অ্যাড্রেসগুলি বিন্দু চিহ্নিতকরণের অংশ না হয়ে অনুসরণ করতে পারে বলে ডট হ্যান্ডলিংটি আসলে একটি মিথ্যা নেগেটিভ তৈরি করতে পারে। উপরের একটি বৈকল্পিক এটি ঠিক করবে:
grep -P '(?<![\d\w\.])(?<x>([0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]))(\.\g<x>){3}(?!([\d\w]|\.\d))'
>>> my_hostname = "testhostn.ame"
>>> print bool(re.match("^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$", my_hostname))
True
>>> my_hostname = "testhostn....ame"
>>> print bool(re.match("^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$", my_hostname))
False
>>> my_hostname = "testhostn.A.ame"
>>> print bool(re.match("^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$", my_hostname))
True
নতুন নেটওয়ার্ক কাঠামোর স্ট্রাক্ট আইভিভি 4 অ্যাড্রেস এবং স্ট্রাক্ট আইপিভি 6 অ্যাড্রেসের জন্য অনুপযুক্ত আরম্ভকারী রয়েছে যা আইপি ঠিকানার অংশটি খুব সহজেই পরিচালনা করে। একটি সংক্ষিপ্ত বিবরণ সহ আইপিভি 6 এ করা সমস্ত সংক্ষিপ্ত নিয়মের সাথে শক্ত tough
দুর্ভাগ্যক্রমে আমার কাছে হোস্টনামের জন্য মার্জিত উত্তর নেই।
নোট করুন যে নেটওয়ার্ক ফ্রেমওয়ার্কটি সাম্প্রতিক, সুতরাং এটি আপনাকে সাম্প্রতিক ওএস সংস্করণগুলির জন্য সংকলন করতে বাধ্য করতে পারে।
import Network
let tests = ["192.168.4.4","fkjhwojfw","192.168.4.4.4","2620:3","2620::33"]
for test in tests {
if let _ = IPv4Address(test) {
debugPrint("\(test) is valid ipv4 address")
} else if let _ = IPv6Address(test) {
debugPrint("\(test) is valid ipv6 address")
} else {
debugPrint("\(test) is not a valid IP address")
}
}
output:
"192.168.4.4 is valid ipv4 address"
"fkjhwojfw is not a valid IP address"
"192.168.4.4.4 is not a valid IP address"
"2620:3 is not a valid IP address"
"2620::33 is valid ipv6 address"
পিএইচপি তে: filter_var(gethostbyname($dns), FILTER_VALIDATE_IP) == true ? 'ip' : 'not ip'
... mywebsite.co.in, thangaraj.name, 18tangaraj.in, thangaraj106.in ইত্যাদি হোস্ট নামগুলির জন্য অনুসন্ধান করা হচ্ছে,
[a-z\d+].*?\\.\w{2,4}$
inet_aton
যথেষ্ট ভাল।
আমি আইপি ঠিকানার সাথে মিল রেখে এই সাধারণ রেজেক্স ম্যাচিং প্যাটার্নটি সম্পর্কে চিন্তা করেছি [d + [।] \ D + [।] \ D + [।] \ D +
^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}
অবশ্যই সঠিক উপায় নয় be আপনার যদি স্ক্রিপ্ট লেখার জন্য লুঙ্গুজে থাকে তবে অবশ্যই এটির নেটওয়ার্ক ফাংশনে আপনার অ্যাক্সেস থাকবে। রিয়েল আইপি চেক করার সর্বোত্তম উপায় এটি সিস্টেমকে রূপান্তর করতে বলা এবং এটি সঠিক ফর্ম্যাটে আইপি করা উচিত তবে সত্য / মিথ্যা পরীক্ষা করে দেখুন। পাইথনের ক্ষেত্রে আমি ব্যবহার করি socket.inet_aton(ip)
। পিএইচপি আপনার প্রয়োজন inet_aton($ip)
।