একটি নিয়মিত প্রকাশ যা কোন সাবডোমেন ছাড়া বৈধ ডোমেন নামের সাথে মিলবে?


123

আমার একটি ডোমেন নাম যাচাই করা দরকার:

google.com

stackoverflow.com

সুতরাং এর কাঁচা ফর্মে একটি ডোমেন - এমনকি www এর মতো একটি সাবডোমেনও নয়।

  1. চরিত্রগুলি কেবল অজ | এজেড | 0-9 এবং সময়কাল (।) এবং ড্যাশ (-)
  2. ডোমেন নামের অংশটি ড্যাশ (-) (যেমন -google-.com) দিয়ে শুরু বা শেষ হওয়া উচিত নয়
  3. ডোমেন নামের অংশটি 1 থেকে 63 টি বর্ণের মধ্যে দীর্ঘ হওয়া উচিত
  4. এক্সটেনশন (টিএলডি) আপাতত # 1 নিয়মের অধীনে যে কোনও কিছু হতে পারে, আমি পরে তাদের তালিকার বিরুদ্ধে বৈধতা দিতে পারি, এটি 1 বা আরও বেশি অক্ষর হওয়া উচিত

সম্পাদনা করুন: টিএলডি দৃশ্যত 2-6 অক্ষর হিসাবে এটি দাঁড়িয়ে আছে

কোন। ৪ টি সংশোধিত: টিএলডি আসলে "সাবডোমেন" লেবেল করা উচিত কারণ এতে .co.uk এর মতো বিষয় অন্তর্ভুক্ত করা উচিত - আমি ধারণা করতে পারি যে কেবলমাত্র বৈধতা সম্ভব হবে (একটি তালিকার বিপরীতে পরীক্ষা করা বাদে) হবে 'প্রথম বিন্দুর পরে একটি বা একটি হওয়া উচিত নিয়ম # 1 এর অধীনে আরও অক্ষর

অনেক ধন্যবাদ, বিশ্বাস করুন আমি চেষ্টা করেছিলাম!


1
কিছুতেই সহায়ক হতে পারে না। গুগল.কম.উইক এবং কিছু জাপানি ডোমেনের কথা এলে আমি নিশ্চিত যে এর জন্য রেজেক্স ব্যবহার করার আগে আপনাকে দুবার ভাবতে হবে। আমার ব্যক্তিগত ধারণা হ'ল রেগেক্স কোনও বাস্তব-ডোমেনে ডোমেনকে বৈধতা দেওয়ার জন্য পর্যাপ্ত নয়। এফওয়াইআই, এখানে টিল্ডস এবং কান্ট্রি কোড দ্বিতীয় স্তরের ডোমেনগুলির তালিকা প্রায় সম্পূর্ণ রয়েছে: স্ট্যাটিক.এয়েশ.মে
কে

1
হোস্টনাম বৈধতা সম্পর্কিত সম্পর্কিত প্রশ্নের আমার উত্তর দেখুন ।
স্যাম

2
প্রায়শই ভুলে যাওয়া: সম্পূর্ণ যোগ্য ডোমেন নামের জন্য আপনার টিএলডি এর পরে একটি সময়ের সাথে মিল থাকা উচিত।
schmijos

1
এটি 4 বছর হয়ে গেছে, এখন গণনা 89,000
অবধি রয়েছে

1
এর মধ্যে কয়েকটি উত্তর বেশ ভাল, তবে এই অন্যান্য প্রশ্নের আরও একটি ভাল উত্তরও রয়েছে যা দেখার মতো।
ক্র্যাফটওয়ার্কস

উত্তর:


49

ভাল, এটি আপনার নির্দিষ্ট প্রয়োজনীয়তার তুলনায় দেখে মনে হচ্ছে (মন্তব্য দেখুন) তুলনায় কিছুটা সোজা স্পষ্ট ward

/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$/

তবে নোট করুন এটি প্রচুর বৈধ ডোমেনগুলি প্রত্যাখ্যান করবে।


এটি একটি ভাল কাজ করা হয়েছে বলে মনে হচ্ছে ধন্যবাদ। কোন ধরণের ডোমেনগুলি বৈধতা পাস করবে না আপনি কি জানেন?
ডমিনিক

12
@ ইনফেনাসাস - আপনার চশমাগুলি দেওয়া হলেও এই রেজেক্সটি সঠিক, আপনার চশমাগুলি ভুল। g.coএকটি বৈধ ডোমেন নাম তবে gএটি কেবল একটি অক্ষর।
sch

3
এটি আমার মনে হয় এমন সমস্ত ক্ষেত্রে মেলে: \ ([a-z0-9]) (([a-z0-9 -] {1,61})? [A-z0-9] {1})? (\। [একটি-z0-9] (([একটি z0-9 -]? {1,61}) [একটি-z0-9] {1})??।) (\ [zA-জেড] {2 , 4}) + $
ট্রান্সিলভ্ল্যাড

1
x.com এখানে পাস করবে না
নীল ম্যাকগুইগান

4
@ নীল: আপনি ঠিক বলেছেন। মূল প্রশ্নটি 3-63 টি অক্ষরের জন্য জিজ্ঞাসা করা হয়েছে (সম্পাদনা 3 দেখুন) এটা তোলে মোটামুটি সহজে এক-অক্ষর ডোমেইনের সমর্থন করার জন্য পরিবর্তন করা যাবে: /^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.[a-zA-Z]{2,}$/। তবে এটি এখনও প্রচুর পরিমাণে বৈধ স্টাফগুলি প্রত্যাখ্যান করে ...
ক্যামেরন

84

আমি জানি যে এটি একটি পুরানো পোস্টের কিছুটা, তবে এখানে নিয়মিত প্রকাশের সমস্তগুলিতে একটি খুব গুরুত্বপূর্ণ উপাদান অনুপস্থিত: আইডিএন ডোমেন নামের জন্য সমর্থন।

IDN ডোমেন নামগুলি xn-- দিয়ে শুরু হয়। তারা ডোমেন নামগুলিতে প্রসারিত UTF-8 অক্ষর সক্ষম করে। উদাহরণস্বরূপ, আপনি কি জানেন যে "♡ .com" একটি বৈধ ডোমেন নাম? হ্যাঁ, "লাভ হার্ট ডট কম"! ডোমেন নামটি যাচাই করার জন্য আপনাকে http://xn--c6h.com/ বৈধকরণটি পাস করতে হবে।

দ্রষ্টব্য, এই রেজেক্সটি ব্যবহার করার জন্য আপনাকে ডোমেনটিকে নিম্ন কেসে রূপান্তর করতে হবে এবং আপনি ডোমেনের নামগুলি ACE এ এনকোড করে তা নিশ্চিত করতে একটি আইডিএন লাইব্রেরিও ব্যবহার করতে হবে ("ASCII সামঞ্জস্যপূর্ণ এনকোডিং" হিসাবেও পরিচিত)। একটি ভাল গ্রন্থাগার হ'ল জিএনইউ-লিবিডন।

আইডিএন (1) হ'ল আন্তর্জাতিকীকৃত ডোমেন নেম লাইব্রেরির কমান্ড লাইন ইন্টারফেস। নিম্নলিখিত উদাহরণটি ইউটিএফ -8 এ হোস্টের নামকে ACE এনকোডিংয়ে রূপান্তর করে। ফলাফল URL টি https: //nic.xn--flw351e/ এর পরে https: // nic। Of 歌 / এর এসিই-এনকোড সমতুল্য হিসাবে ব্যবহার করা যেতে পারে ।

  $ idn --quiet -a nic.谷歌
  nic.xn--flw351e

এই যাদু নিয়মিত প্রকাশের বেশিরভাগ ডোমেনগুলি কভার করা উচিত (যদিও, আমি নিশ্চিত যে অনেকগুলি বৈধ প্রান্তের মামলা আমি মিস করেছি):

^((?!-))(xn--)?[a-z0-9][a-z0-9-_]{0,61}[a-z0-9]{0,1}\.(xn--)?([a-z0-9\-]{1,61}|[a-z0-9-]{1,30}\.[a-z]{2,})$

কোনও ডোমেন যাচাইকরণ রেজেক্স নির্বাচন করার সময়, আপনার ডোমেনটি নিম্নলিখিতগুলির সাথে মেলে কিনা তা দেখতে হবে:

  1. xn--stackoverflow.com
  2. stackoverflow.xn - COM
  3. stackoverflow.co.uk

যদি এই তিনটি ডোমেন পাস না করে তবে আপনার নিয়মিত প্রকাশটি বৈধ ডোমেনগুলিকে অনুমতি দিচ্ছে না!

পরীক্ষা করে দেখুন ওরাকল আন্তর্জাতিক ভাষা পরিবেশ গাইড থেকে ইন্টারন্যাশনেলাইজড ডোমেন নামগুলি সাপোর্ট পৃষ্ঠা দেখুন।

নিখরচায় নিখরচায় চেষ্টা করে দেখুন: http://www.regexr.com/3abjr

আইসিএএনএন টিডিএলডদের একটি তালিকা রাখে যা নির্ধারিত হয়েছে যা আইডিএন ডোমেনগুলির কয়েকটি উদাহরণ দেখতে ব্যবহার করা যেতে পারে।


সম্পাদনা:

 ^(((?!-))(xn--|_{1,1})?[a-z0-9-]{0,61}[a-z0-9]{1,1}\.)*(xn--)?([a-z0-9][a-z0-9\-]{0,60}|[a-z0-9-]{1,30}\.[a-z]{2,})$

এই নিয়মিত প্রকাশটি এমন ডোমেনগুলি থামিয়ে দেবে যা হোস্টনামের শেষে '-' রয়েছে যা বৈধ বলে চিহ্নিত হয়েছে। অতিরিক্তভাবে, এটি সীমাহীন সাবডোমেনগুলিকে অনুমতি দেয়।


1
মনে রাখবেন যে এটি কেবলমাত্র একটি সর্বোচ্চ সাবডোমেনকে সমর্থন করবে, এর চেয়ে বেশি কিছু মিথ্যাতে ফল দেবে। এটি এমন কোনও বিষয় নয় যা আপনি অভ্যন্তরীণ সাইটগুলি ইত্যাদির জন্য ব্যবহার না করাতে চালিত হন /^((?!-))(xn--)?[a-z0-9][a-z0-9-_]{0,61}[a-z0-9]{0,}\.?((xn--)?([a-z0-9\-.]{1,61}|[a-z0-9-]{1,30})\.?[a-z]{2,})$/i
li

1
তবে নিঃসঙ্গ tld গুলি কাজ করছে না :( উদাহরণস্বরূপ to.( থেকে। ) সামগ্রী সহ বৈধ url
iiic

@ iiic, হ্যাঁ, তবে to.এটি সম্পূর্ণরূপে যোগ্যতাসম্পন্ন ডোমেন নাম নয়। আপনি যদি শীর্ষ স্তরের ডোমেনগুলিকে অনুমতি দিতে চান তবে আপনার মতো কিছু ব্যবহার করা উচিত ^(((?!-))(xn--)?[a-z0-9][a-z0-9-_]{0,61}[a-z0-9]{0,1}\.)?(x--)?([a-z0-9\-]{1,61}|[a-z0-9-]{1,30}\.[a-z]{2,})\.?$, তবে সতর্ক হওয়া উচিত , আপনি এমন লোকদের মাধ্যমে testবা naখুব বেশি ডোমেন রাখার সুযোগ দেবেন !
টিম গ্রিনিভেল্ড

এটি অবৈধ invali.dথাকাকালীন বৈধ ডোমেন নাম হিসাবে গ্রহণ করে invali.d.co.uk
পাভেল ক্রাকওইয়াক

1
এটি লক্ষ করা উচিত যে xn--stackoverflow.com'স্ট্যাকওভারফ্লো' পুনিকোড থেকে রূপান্তর করা যায় না বলে একটি বৈধ নাম নয়। এটি অবশ্য একটি রেজেক্স কি করতে পারে তার বাইরে। একটি সাধারণ মন্তব্য হিসাবে, xn--[a-z0-9]+লেবেলগুলি কেবল আইডিএন হবে যেখানে xn--[a-z0-9]+\-[a-z0-9]+এএসসিআইআই এবং নন-এএসসিআইআই অক্ষরগুলির মিশ্রণ নির্দেশ করবে
মার্কাস

50

আমার RegEx পরবর্তী:

^[a-zA-Z0-9][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9]{0,1}\.([a-zA-Z]{1,6}|[a-zA-Z0-9-]{1,30}\.[a-zA-Z]{2,3})$

এটা জন্য ঠিক আছে i.oh1.me এবং জন্য wow.british-library.uk

UPD

এখানে নিয়ম আপডেট করা হয়েছে

^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\.[a-zA-Z]{2,3})$

নিয়মিত প্রকাশের ভিজ্যুয়ালাইজেশন

https://www.debuggex.com/r/y4Xe_hDVO11bv1DV

এখন এটি ডোমেন লেবেলের শুরু বা শেষের জন্য -বা এটি পরীক্ষা করে _


9
দেখতে বেশ ভাল লাগছে তবে {2,6}নতুন টিএলডি-র জন্য মানদণ্ডগুলি আপডেট করা দরকার। সম্ভবত {2,}
jwatts1980

@ jwatts1980 এর মতো জোনগুলির উদাহরণ রয়েছে? অথবা আপনি ভবিষ্যতের সম্ভাব্য অঞ্চলগুলির অর্থ?
পাকা

1
এখানে উদাহরণগুলি এবং সম্পর্কিত সংস্থাগুলির
jwatts1980

1
কেন ([a-zA-Z] {1} [a-zA-Z] {1}) এবং না ([a-zA-Z] {2})?
অ্যান্টন

3
দুটি বিকল্পের সাথে শেষ অংশটিও ভুল: এখানে সিসিটিএলডি (দুটি অক্ষর) রয়েছে যা আইডিএনএ সাবলেটগুলি গ্রহণ করে। ইতিমধ্যে আইডিএনএ লেবেলগুলি ব্যবহার করে এখন টিএলডি লেবেল রয়েছে। আপনার বিশেষ কেসটি শেষের লেবেলটি অন্যের থেকে পৃথক নয় (এবং এখন সাবডোমেনের অন্যান্য লেবেলের মতো চলক দৈর্ঘ্যের সাথে অনেকগুলি এক্সটেনশন যুক্ত হয়েছে note লক্ষ করুন আইডিএনএ লেবেলগুলি পুনাইকোডযুক্তও উপস্থিত হতে পারে (যার ক্ষেত্রে সেখানে "- - "লেবেলের একটি বিভাগ, কেবলমাত্র ক্ষেত্রে যেখানে" - "লেবেলে অনুমতি দেওয়া হয় .. অবশেষে আন্ডারস্কোরটি সমস্ত লেবেলের সর্বত্রই অবৈধ।
verdy_p

24

আমার বাজি:

^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$

ব্যাখ্যা:

ডোমেন নামগুলি বিভাগগুলি থেকে নির্মিত। এখানে একটি বিভাগ রয়েছে (চূড়ান্ত ব্যতীত):

[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?

এটিতে 1-63 টি অক্ষর থাকতে পারে, শুরু হয় না বা শেষ হয় না '-' দিয়ে।

এখন 'যোগ করুন।' এটিতে এবং কমপক্ষে একবারে পুনরাবৃত্তি করুন:

(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+

তারপরে চূড়ান্ত বিভাগটি সংযুক্ত করুন যা 2-63 অক্ষরের দীর্ঘ:

[a-z0-9][a-z0-9-]{0,61}[a-z0-9]

এটি এখানে পরীক্ষা করুন: http://regexr.com/3au3g


@ গণেশবাবু সঠিক মিলের অর্থ কী?
ইয়ারোস্লাভ স্টাভিনিচি

1
অন্যান্য সমস্ত উত্তর আমার পক্ষে কাজ করেনি তবে এটি একটি করেছিল।
ড্যানি কলোম্বে

আমার অনুরূপ প্রয়োজনীয়তা ছিল যেখানে আমি সেমিকোলন এবং কমা এড়াতে চাই শেষ পর্যন্ত আমি অনেক চেষ্টা করেছিলাম তবে নীচে কোনও সাফল্য আমি কনস্ট রেজেক্সডোমাইন = / using ব্যবহার করছি না (?: [এ-জা-জেড -0] - (?: [ZA-z0-9 -] {0,61} [ZA-z0-9]) \) [ZA-z0-9] [ZA-z0-9 -]?। { 0,61} [ZA-z0-9] / ছ; ঠিক আছে যদি আমি ব্যবহার করি তা বৈধ হয় এবং; এর মাঝে তবে শেষ পর্যন্ত ব্যর্থ হয়।
হ্যারি

আমি বেশ কয়েকটি ডোমেন পেয়েছি যা বৈধ হওয়া উচিত তবে এটি আপনার রেজেক্সের সাথে অবৈধ। উদাহরণস্বরূপ редбулл.москва জন্য একটি বৈধ ডোমেইন বা এছাড়াও редбулл.рф এবং红色的公牛中国।
pubkey

1
@pubkey, আপনি সেই ডোমেইন নাম রূপান্তর করতে হবে punycode । For.москва এর আসল নাম xn - 90afc0aazy.xn - 80adxhks এবং আমার রেজেক্স এর সাথে মেলে।
ইয়ারোস্লাভ স্টাভিনিচী

13

কেবলমাত্র একটি ছোট্ট সংশোধন - শেষ অংশটি 6. পর্যন্ত হওয়া উচিত should সুতরাং,

^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,6}$

দীর্ঘতম টিএলডি হ'ল museum( cha টি চর) - http://en.wikedia.org/wiki/List_of_Internet_top-level_domains


3
দ্রষ্টব্য: এটি বৈধ (এখনও বিরল) ডোমেন নাম www.my---domain.com পাস করবে না
ক্রিস বিয়ার

17
এটি নতুন টিএলডি দিয়ে কাটাবেন না যেমন.photography
স্যাম ফিগুয়েরো

2
@ সামিফিগুয়েরো আপনাকে কেবল তার দৈর্ঘ্যটি পরিবর্তন করতে হবে
ইস্পাত মস্তিষ্ক

3
টিএলডি পরীক্ষা করার জন্য এটি সাবডোমেনগুলি থেকে আলাদা নয়। এবং বর্তমানে availableটিএলডিএসে রেজেক্স বেস করা ভবিষ্যতের প্রমাণ নয়।
Loïc Faure-Lacroix

1
শেষ বিটটি করার পরামর্শ দিন {2,63}: স্ট্যাকওভারফ্লো // প্রশ্নগুলি
এরিক ডবস

13

স্বীকৃত উত্তর আমার পক্ষে কাজ করছে না, এটি চেষ্টা করুন:

^ ((-!) [ZA-z0-9 -] {1,63} (<-।) \) [ZA-z- র] {2,6} $

বৈধতার জন্য এই ইউনিট পরীক্ষার কেসগুলি দেখুন


4
নতুন আর টিএলডি নামের মতো .audio,। ফটোগ্রাফি এবং এর বেশিরভাগের জন্য কোনও সমর্থন নেই ... ডেটা.িয়ানা.আর.আর.জি.টিএলডি
টেল্ডস- আলফা-

@ mrbinky3000 শুধু শেষটিকে {2,6}অন্য কোনওটিতে পরিবর্তন করুন এবং এটি কাজ করবে। খনি:^((?!-)[a-zA-Z0-9-]{1,63}(?<!-)\.)+(?!-)[a-zA-Z0-9-]{1,63}(?<!-)$
মাইগড

@ মাইগড আপনার রেজেক্সে সর্বশেষ প্রশ্ন চিহ্নের পরে কিছু শূন্য প্রস্থের আবর্জনা রয়েছে, সুতরাং যে কেউ এটি অনুলিপি করছেন তা অবাক হয়ে অবাক হবেন
মাইটিপর্ক

1
@ মাইটিপর্ক ঠিক আছে! দুঃখিত এখানে একটি ( ^((?!-)[a-zA-Z0-9-]{1,63}(?<!-)\.)+(?!-)[a-zA-Z0-9-]{1,63}(?<!-)$
আশাবাদী

খুব সুন্দর. হায়রে, চেহারাটির পিছনে প্রকাশগুলি জাভাস্ক্রিপ্টে বৈধ নয়। : /
ফিলিহ

13

এই উত্তরটি ডোমেন নামগুলির জন্য (পরিষেবা আরআর সহ), হোস্টের নাম নয় (কোনও ইমেল হোস্টনামের মতো)।

^(?=.{1,253}\.?$)(?:(?!-|[^.]+_)[A-Za-z0-9-_]{1,63}(?<!-)(?:\.|$)){2,}$

এটি মূলত ম্যাকিয়ংয়ের উত্তর এবং অতিরিক্ত:

  • দৈর্ঘ্য উপসর্গ এবং নাল মূল সহ 255 অক্টেটের সর্বাধিক দৈর্ঘ্য।
  • অনুসরণ করার অনুমতি দিন '' সুস্পষ্ট ডিএনএস রুটের জন্য।
  • পরিষেবা ডোমেন আরআরগুলির জন্য নেতৃস্থানীয় '_' মঞ্জুরি দিন, (বাগগুলি: _ লেবেলের জন্য 15 চর সর্বোচ্চ প্রয়োগ করে না, বা পরিষেবা আরআরসের উপরে কমপক্ষে একটি ডোমেনের প্রয়োজনও নেই)
  • সমস্ত সম্ভাব্য টিএলডি মিলছে।
  • সাবডোমেন লেবেলগুলি ক্যাপচার করে না।

পার্টস দ্বারা

তাকাতে, lengthচ্ছিক আড়াল সহ '253 টি অক্ষরের মধ্যে সর্বাধিক দৈর্ঘ্য সীমাবদ্ধ করুন' '

(?=.{1,253}\.?$)

তাকাও, পরের অক্ষরটি '-' নয় এবং '_' পরবর্তী কোনও অক্ষর অনুসরণ করে না '। এটি বলার জন্য, লেবেলের প্রথম অক্ষরটি '-' নয় এবং কেবল প্রথম অক্ষরটি '_' হতে পারে।

(?!-|[^.]+_)

প্রতি লেবেলটিতে অনুমোদিত অক্ষরের 1 থেকে 63 এর মধ্যে।

[A-Za-z0-9-_]{1,63}

পিছনে চেহারা, আগের অক্ষরটি '-' নয়। এটি বলার জন্য, লেবেলের শেষ অক্ষরটি '-' নয় এটি প্রয়োগ করুন।

(?<!-)

জোর করে একটি '।' সর্বশেষ ব্যতীত প্রতিটি লেবেলের শেষে, যেখানে এটি alচ্ছিক।

(?:\.|$)

উপরের অংশ থেকে বেশিরভাগই একত্রিত হয়ে এর জন্য কমপক্ষে দুটি ডোমেন স্তর প্রয়োজন, যা একেবারেই সঠিক নয়, তবে সাধারণত যুক্তিসঙ্গত অনুমান হয়। আপনি যদি টিএলডি বা অনুপযুক্ত আপেক্ষিক সাবডোমেনগুলি (যেমন লোকালহোস্ট, মাইরওটার, এর মাধ্যমে) অনুমতি দিতে চান তবে {2,} থেকে + এ পরিবর্তন করুন

(?:(?!-|[^.]+_)[A-Za-z0-9-_]{1,63}(?<!-)(?:\.|$)){2,}

এই অভিব্যক্তি জন্য ইউনিট পরীক্ষা


1
ধন্যবাদ! এটি এখানে সেরা রেইজেক্স। আপনার পুরো ব্যাখ্যা এবং ইউনিট পরীক্ষা একটি বোনাস।
নডস্টার

"আরআর" এর অর্থ কী?
হুইলারের

রিসোর্স রেকর্ড সাধারণত একটি পাঠ্য বা তথ্য ক্ষেত্র যা আপনাকে একটি পরিষেবার সাথে কীভাবে ইন্টারঅ্যাক্ট করতে হয় তা বলে।
অ্যান্ড্রু ডোমাসেক

এই রেজেক্স সঠিক নয়। উদাহরণস্বরূপ, ডোমেন রেডবুল 移动 বৈধ তবে রেজেক্স মিলবে না।
পাবকি

প্রথমে পিউকোডে রূপান্তর করুন, তারপরে ম্যাচ করুন। প্রাক পেনিকোড সংস্করণে দৈর্ঘ্যের সীমা বাস্তবায়ন করা সত্যই কঠিন।
অ্যান্ড্রু ডোমাসেক

8

অন্যান্য উত্তরের ক্ষেত্রে ডোমেন নাম বৈধতা সমাধানে সঠিক দিক নির্দেশ করার জন্য আপনাকে ধন্যবাদ। ডোমেন নামগুলি বিভিন্ন উপায়ে বৈধ করা যেতে পারে।

আপনার যদি আইডিএন ডোমেনটিকে মানব পঠনযোগ্য ফর্মটিতে বৈধতা দেওয়ার দরকার হয় তবে রেজেেক্স \p{L}সহায়তা করবে। এটি যে কোনও ভাষার কোনও চরিত্রের সাথে মেলানোর অনুমতি দেয়।

নোট করুন যে শেষ অংশে হাইফেনও থাকতে পারে ! পিনাইকোড এনকোডযুক্ত থাকায় চিনিজের নামগুলিতে tld এ ইউনিকোড অক্ষর থাকতে পারে।

আমি সমাধানে এসেছি যা উদাহরণগুলির সাথে মিলবে:

  • google.com
  • masełkowski.pl
  • maselkowski.pl
  • m.maselkowski.pl
  • www.masełkowski.pl.com
  • xn--masekowski-d0b.pl
  • 中国 互联 网络 信息 中心। 中国
  • XN - fiqa61au8b7zsevnm8ak20mc4a87e.xn - fiqs8s

রেজেক্স হ'ল:

^[0-9\p{L}][0-9\p{L}-\.]{1,61}[0-9\p{L}]\.[0-9\p{L}][\p{L}-]*[0-9\p{L}]+$

এখানে দেখুন এবং টিউন করুন

দ্রষ্টব্য: এই রেজিএক্সপ্যাকটি বেশ অনুমতিযোগ্য, যেমন বর্তমান ডোমেন নামগুলি অনুমোদিত চরিত্র সেট।

আপডেট : আরও সরলীকৃত, a-aA-Z\p{L}ঠিক যেমনটি\p{L}

দ্রষ্টব্য 2: একমাত্র সমস্যাটি হ'ল এটি ডাবলগুলি এর সাথে ডাবল ডটসের সাথে মেলে ... যেমন masełk..owski.pl। যদি কেহ কীভাবে এটি ঠিক করতে হয় তবে দয়া করে উন্নতি করুন।


আমরা কেবল [:alpha:]এবং [:digit]পরিবর্তে ব্যবহার করতে পারি \p{L}। এটা ঠিক কাজ করে।
পুচু

আপনি কোনও আইডিএনকে প্রথমে পাইকোডে রূপান্তর না করে এইভাবে বৈধ করতে পারবেন না। উদাহরণস্বরূপ আপনার এক্সপ্রেসের সাথে, 中国互联网络信息中心中国互联网络信息中心中国互联网络信.中国বৈধ হিসাবে যাচাই করে তবে IDN রূপান্তর হওয়ার পরে এটি প্রতি লেবেলে অনেক বেশি বাইট। \ পি {এল} প্রতীকগুলির সাথে মেলে, পুণকোড বাইটগুলি নয় (যা প্রতীক থেকে প্রতীক হিসাবে পরিবর্তিত হয়), সুতরাং এর রূপান্তর-পরবর্তী আকারকে সীমাবদ্ধ করার চেষ্টা করার সময় পুনরাবৃত্তি গণনাটি অকার্যকর।
অ্যান্ড্রু ডোমাসেক

ভাল পয়েন্ট, প্রতিটি অংশ 64 বাইট মধ্যে সীমাবদ্ধ। তবে আমরা এটি RegExp দিয়ে পরীক্ষা করতে পারছি না, সুতরাং পুনিকোড ডিকোডার ব্যবহার করে আরও বৈধকরণের পদক্ষেপগুলি প্রয়োজন - যা আপনার উদাহরণ হোস্টনামের সাথে ব্যর্থ হবে। চিনিজ অবশ্যই এই সীমাবদ্ধতার দ্বারা উন্মাদ হওয়া উচিত।
পিটারএম

7
^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,7}$

[ডোমেন - লোয়ার কেস লেটার এবং কেবলমাত্র ০-৯]] [একটি হাইফেন থাকতে পারে] + [টিএলডি - নিম্নতর কেসটি অবশ্যই ২ থেকে letters বর্ণের মধ্যে হতে হবে] নিয়মিত প্রকাশের পরীক্ষার জন্য
http://rubular.com/ উজ্জ্বল!
সম্পাদনা করুন: ড্যান ক্যাডিডিগান নির্দেশিত হিসাবে '.rentals' এর জন্য TLD সর্বাধিক 7 টি অক্ষরে আপডেট করেছে।


1
টিএলডি কেন সীমাবদ্ধ? এখন .photographyঅবৈধ হবে। কেবল এটি সীমাহীন অক্ষর বা এর মতো কিছু করুন।
এডরিয়ান

5

মন্তব্য করতে এখনও যথেষ্ট প্রতিনিধি। পাকার সমাধানের প্রতিক্রিয়া হিসাবে, আমি তিনটি আইটেম সামঞ্জস্য করতে আমার প্রয়োজন:

  • ড্যাশ এবং আন্ডারস্কোরটি ড্যাশটিকে ব্যাপ্তি হিসাবে ব্যাখ্যা করার কারণে সরানো হয়েছিল ("0-9" হিসাবে)
  • অনেক সাবডোমেন সহ ডোমেন নামের জন্য একটি সম্পূর্ণ স্টপ যুক্ত হয়েছে
  • টিএলডিগুলির সম্ভাব্য দৈর্ঘ্য 13 এ প্রসারিত করা হয়েছে

আগে:

^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\.[a-zA-Z]{2,3})$

পরে:

^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][-_\.a-zA-Z0-9]{1,61}[a-zA-Z0-9]))\.([a-zA-Z]{2,13}|[a-zA-Z0-9-]{2,30}\.[a-zA-Z]{2,3})$

3

নতুন জিটিএলডি জন্য

/^((?!-)[\p{L}\p{N}-]+(?<!-)\.)+[\p{L}\p{N}]{2,}$/iu

2
আপনি উত্তর কি অন্যদের চেয়ে ভাল করতে দয়া করে আমাদের আরও কিছু বিবরণ দিন? আপনি আরও কি মেলে? তথ্য যুক্ত করতে দয়া করে আপনার পোস্ট সরাসরি সম্পাদনা করুন।
সোভেন আর।

আমি যেমন লিখেছি: নতুন জিটিএলডি। ইউনিকোড অক্ষর এবং ইউনিকোড টিএলডি সহ ডোমেন।
বেন কেইল

1
@BenKeil কি সম্পর্কে এই অংশ: (<-!)
জোড়

@ জোজার যা পিছনে নেতিবাচক চেহারা। এটি ব্যবহার করে দেখুন shortcutfoo.com/app/dojos/regex/cheatsheet
মুহাম্মদ ফাইজান

3

ইতিমধ্যে নির্দেশিত হিসাবে ব্যবহারিক অর্থে সাবডোমেনগুলি (যেমন .co.ukডোমেন) বলা সুস্পষ্ট নয় । বন্য অঞ্চলে ঘটে এমন ডোমেনগুলি যাচাই করতে আমরা এই রেজেক্স ব্যবহার করি । এটি আমার জানা সমস্ত ব্যবহারিক ব্যবহারের কেসগুলি কভার করে। নতুনদের স্বাগত জানাই। আমাদের নির্দেশিকা অনুসারে এটি ক্যাপচার না করা গ্রুপগুলি এবং লোভী মিলগুলি এড়িয়ে চলে।

^(?!.*?_.*?)(?!(?:[\d\w]+?\.)?\-[\w\d\.\-]*?)(?![\w\d]+?\-\.(?:[\d\w\.\-]+?))(?=[\w\d])(?=[\w\d\.\-]*?\.+[\w\d\.\-]*?)(?![\w\d\.\-]{254})(?!(?:\.?[\w\d\-\.]*?[\w\d\-]{64,}\.)+?)[\w\d\.\-]+?(?<![\w\d\-\.]*?\.[\d]+?)(?<=[\w\d\-]{2,})(?<![\w\d\-]{25})$

প্রুফ, ব্যাখ্যা এবং উদাহরণ: https://regex101.com/r/FLA9Bv/9 ( দ্রষ্টব্য: বর্তমানে কেবলমাত্র ক্রোমে কাজ করে কারণ রেজেক্স কেবলমাত্র ECMA2018 এ সমর্থিত লুকবাইন্ডগুলি ব্যবহার করে )

ডোমেনগুলি যাচাই করার সময় বেছে নিতে দুটি পন্থা রয়েছে।

বই-পুস্তক FQDN মিল (তাত্ত্বিক সংজ্ঞা, বাস্তবে খুব কমই দেখা গিয়েছিল):

ব্যবহারিক / রক্ষণশীল এফকিউডিএন মিল (ব্যবহারিক সংজ্ঞা, অনুশীলনে প্রত্যাশিত এবং সমর্থিত):

  • নিম্নলিখিত ব্যতিক্রম / সংযোজনের সাথে বইয়ের সাথে মিলছে
  • বৈধ অক্ষর: [a-zA-Z0-9.-]
  • হাইফেন দিয়ে লেবেলগুলি শুরু বা শেষ হতে পারে না ( আরএফসি -952 এবং আরএফসি-1123 / 2.1 অনুযায়ী )
  • টিএলডি মিনিটের দৈর্ঘ্য 2 অক্ষর, বর্তমানে বিদ্যমান রেকর্ড অনুযায়ী সর্বোচ্চ দৈর্ঘ্য 24 অক্ষর 24
  • পেছনের বিন্দুর সাথে মেলে না

2
^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]+(\.[a-zA-Z]+)$

5
1 2,4} যোগ করার জন্য -1। একক চরিত্রের টিএলডি থাকা সম্ভব (যদিও বর্তমানে মূলের কোনওটি নেই)। .মোবাইল সম্পর্কে কী? .associates? উভয়ই বৈধ টিএলডি, এবং এই রেজেক্স দ্বারা প্রত্যাখ্যান করা হবে। data.iana.org/TLD/tlds-alpha-by-domain.txt
টিম

2

এখানে উদাহরণ সহ সম্পূর্ণ কোড দেওয়া হল:

<?php
function is_domain($url)
{
    $parse = parse_url($url);
    if (isset($parse['host'])) {
        $domain = $parse['host'];
    } else {
        $domain = $url;
    }

    return preg_match('/^(?!\-)(?:[a-zA-Z\d\-]{0,62}[a-zA-Z\d]\.){1,126}(?!\d+)[a-zA-Z\d]{1,63}$/', $domain);
}

echo is_domain('example.com'); //true
echo is_domain('https://example.com'); //true
echo is_domain('https://.example.com'); //false
echo is_domain('https://localhost'); //false

2
^((localhost)|((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+[A-Za-z]{2,253})$

আমার উত্তরের ভিত্তিতে আপনাকে @ এমকিয়ং ধন্যবাদ। আমি আর গ্রহণযোগ্য লেবেল সমর্থন করতে এটি পরিবর্তন করেছি।

এছাড়াও, "লোকালহোস্ট" প্রযুক্তিগতভাবে একটি বৈধ ডোমেন নাম। আমি এই উত্তরটি আন্তর্জাতিকীকরণ করা ডোমেন নামগুলিতে সংশোধন করব।


0
/^((([a-zA-Z]{1,2})|([0-9]{1,2})|([a-zA-Z0-9]{1,2})|([a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]))\.)+[a-zA-Z]{2,6}$/
  • ([a-zA-Z]{1,2}) -> মাত্র দুটি অক্ষর গ্রহণ করার জন্য

  • ([0-9]{1,2})-> শুধুমাত্র দুটি সংখ্যা গ্রহণের জন্য

যদি কিছু দুটি ছাড়িয়ে যায় তবে ([a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9])এই রেজেক্স এটির যত্ন নেবে।

আমরা যদি ম্যাচিং করতে চাই তবে কমপক্ষে একটি সময় +ব্যবহার করা হবে।


0

^ [ZA-Z0-9] [- ZA-Z0-9]। (। [AZ] {2,3}) [ZA-Z0-9] [AZ] {2,3} (। [AZ] {2,3})? $

উদাহরণস্বরূপ:

stack.com
sta-ck.com
sta---ck.com
9sta--ck.com
sta--ck9.com
stack99.com
99stack.com
sta99ck.com

এটি এক্সটেনশনের জন্যও কাজ করবে

.com.uk
.co.in
.uk.edu.in

উদাহরণগুলি যেগুলি কাজ করবে না:

-stack.com

এটি দীর্ঘতম ডোমেন এক্সটেনশনের সাথেও কাজ করবে ".versicherung"



0

নিম্নলিখিত রেজেেক্স প্রদত্ত ডোমেনের সাব, রুট এবং টিএলডিকে নিষ্কাশন করে:

^(?<domain>(?<domain_sub>(?:[^\/\"\]:\.\s\|\-][^\/\"\]:\.\s\|]*?\.)*?)(?<domain_root>[^\/\"\]:\s\.\|\n]+\.(?<domain_tld>(?:xn--)?[\w-]{2,7}(?:\.[a-zA-Z-]{2,3})*)))$

নিম্নলিখিত ডোমেনগুলির জন্য পরীক্ষিত:

* stack.com
* sta-ck.com
* sta---ck.com
* 9sta--ck.com
* sta--ck9.com
* stack99.com
* 99stack.com
* sta99ck.com
* google.com.uk
* google.co.in

* google.com
* masełkowski.pl
* maselkowski.pl
* m.maselkowski.pl
* www.masełkowski.pl.com
* xn--masekowski-d0b.pl
* xn--fiqa61au8b7zsevnm8ak20mc4a87e.xn--fiqs8s

* xn--stackoverflow.com
* stackoverflow.xn--com
* stackoverflow.co.uk

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