এইচটিএমএল 5 ফর্ম-বৈধতা কেন ডট ছাড়াই ইমেলগুলিকে অনুমতি দেয়?


112

কিছু HTML5 ফর্ম-বৈধতা প্রদর্শনের জন্য আমি খুব সাধারণ মক আপ লিখছি। যাইহোক, আমি লক্ষ্য করেছি যে ইমেল বৈধতা ঠিকানায় কোনও বিন্দুর জন্য পরীক্ষা করে না, বা এটি বিন্দুতে বর্ণিত অক্ষরের জন্যও পরীক্ষা করে না।

অন্য কথায়, "জন @ ডো" বৈধ হিসাবে বিবেচিত হবে, যখন এটি স্পষ্টভাবে কোনও বৈধ ইমেল ঠিকানা নয়; "doe" একটি ডোমেন নয়।

এইভাবে আমি আমার ইমেল ক্ষেত্রটি কোডিং করছি:

<input type="email" required />

তা কি যথেষ্ট নয়?

আমি কী বলতে চাইছি তা দেখতে এই কোলাহলটি পরীক্ষা করে দেখুন।

দ্রষ্টব্য: আমি জানি কীভাবে এটি পরিবর্তে একটি রেজিএক্স প্যাটার্নের মাধ্যমে সম্পন্ন করতে হয়। আমি কেবল ভাবছি যে এর পরিবর্তে ইমেল প্রকারটি ব্যবহার করে কেউ কীভাবে পালাতে পারবেন।


10
In other words, "john@doe" is considered valid, when it's clearly not a valid email address; doe isn't a domain.হ্যাঁ, doeঅবশ্যই একটি ডোমেন হতে পারে (ভাবেন localhost), এবং সেই ঠিকানাটি অনুমান অনুযায়ী প্রযুক্তিগতভাবে বৈধ।
admdrew

2
@ অ্যাডমিড্রু হেহ ... এটি একটি মজার বিষয় হবে, যদি আপনি নিজেই মেলসভার থেকে কোনও ইমেল প্রেরণ করেন এবং "বন্ধু @ লোকালহোস্ট" লেখার সিদ্ধান্ত নেন
কাতানা ৩১

@ কটানা 314 - হি, হ্যাঁ। বেশিরভাগ (ভালভাবে কনফিগার করা) মেইল ​​সার্ভারগুলি প্রত্যাশিত ডোমেনের সাথে মেলে না এমন ঠিকানাগুলিতে প্রেরিত বার্তাগুলি প্রত্যাখ্যান করবে, তাই সাধারণভাবে বলতে গেলে localhostঠিকানাগুলির সাথে কোনও সমস্যা নেই ।
স্বীকৃত

উত্তর:


83

কারণ একটি @ বি একটি বৈধ ইমেল ঠিকানা (উদাহরণস্বরূপ লোকালহোস্ট একটি বৈধ ডোমেন)। Http://en.wikedia.org/wiki/Email_address# উদাহরণ দেখুন

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


7
ধন্যবাদ। আমি কেবল দেখছি না যে কোনও সংস্থা কীভাবে এই বহিরাগত ইমেল বৈধতা থেকে উপকৃত হতে পারে। ফেসবুক কাউকে ডাব্লু / an @ বি ঠিকানায় সাইন আপ করতে দেয় না। যাই হোক তথ্যের জন্য ধন্যবাদ. (আমি আপনার জবাবটি
কমিয়ে দেখিনি

6
ফেসবুকের মতো ওয়েবসাইটগুলির ক্ষেত্রে জনসাধারণের অ্যাক্সেস নেই এটির কোনও ব্যবহার নেই। তবে অভ্যন্তরীণ ওয়েবসাইটগুলির কথা ভাবুন। আপনি জো @ সাপোর্টে লিখতে চাইতে পারেন। তবে আমি এটিও ন্যূনতম ব্যবহারের বলে মনে করি। তবুও, ওয়েব ব্রাউজারগুলি সাধারণের ক্ষেত্রে ভিত্তিক নয়, মান (যেমন আরএফসি) এর ভিত্তিতে প্রয়োগ করতে হয়।
আলী আলাভি

9
আমি অবাক হয়েছি যখন শেষবারের মতো কেউ লোকালহোস্টে আসলে ইমেল পাঠিয়েছিল!
ম্যাথু লক

2
সাইডেনোট হিসাবে সংক্ষিপ্ততম কর্মরত ইমেল ঠিকানাগুলির মধ্যে একটি ( রেকর্ডসেটরau@ua
ওয়ার্ড- রিকার্ড

132

তাত্ত্বিকভাবে আপনার ঠিকানা "ছাড়া" থাকতে পারে। ভিতরে.

প্রযুক্তিগত দিক থেকে যেমন:

user@com
user@localserver
user@[IPv6:2001:db8::1]

সমস্ত বৈধ ইমেল।

সুতরাং স্ট্যান্ডার্ড এইচটিএমএল 5 বৈধতা অস্বাভাবিকগুলি সহ সমস্ত বৈধ ই-মেলগুলির জন্য অনুমতি দেয়।

কিছু সহজে পড়ার জন্য ব্যাখ্যা (স্ট্যান্ডার্ডগুলির মাধ্যমে পড়ার পরিবর্তে): http://en.wikedia.org/wiki/Email_address# উদাহরণ


1
সম্মত, এটি 'সমাধান' নয়, কেন 'কেন' জবাব দেয়। আমি কেন জানতে আগ্রহী ছিলাম। এখন আমি "সংশোধন" করতে জানি না।
এলিয়েনর জিম্মারম্যান

প্রথম ধরণের একটি উদাহরণ হ'ল ডোমেন uz, যা সরাসরি অক্টোবর 2018 পর্যন্ত কোনও আইপি দেখায় you আপনি যদি nslookup uzএটি করেন তবে এটি নির্দেশ করে 91.212.89.8, তাই এই ডোমেনেও ইমেল থাকা সম্ভব হওয়া উচিত।
পালস জেট

36

এটি ইনপুটটিতে যুক্ত করার চেষ্টা করুন

pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,63}$"

বেহালা


2
প্রচুর নতুন ডোমেন উপলভ্য (যেমন অ্যাকাউন্ট্যান্টস [১১], আন্তর্জাতিক [১৩] ইত্যাদি) এবং রিজেক্স প্যাটার্নের দৈর্ঘ্যের মান 63৩ এর একটি সম্ভাব্য সর্বোচ্চ দৈর্ঘ্য {2, {৩ should হওয়া উচিত}
আনসাকুইলা

42
-1। প্রথমত, আপনি এমনকি এটি কী অনুমতি দেয় বা সীমাবদ্ধ করে তা ব্যাখ্যা করার চেষ্টাও করেন নি বা কেন কেউ এই নিয়মগুলি চায় want দ্বিতীয়ত, এটা অনেক বেশী নিয়ন্ত্রণমূলক চেয়ে মান (আমি পড়েছি এবং grokked আছে মান সাজা হবে না, কিন্তু দেখুন, উদাহরণস্বরূপ, জন্য অনুমতি নেই en.wikipedia.org/wiki/Email_address#Internationalization বা স্ট্যাক অনেক ইমেল বৈধতা প্রশ্ন অদ্ভুত ইমেল ঠিকানাগুলির উদাহরণের জন্য ওভারফ্লো)। কেন করবেন? যদি কেউ তাদের ইমেল হিসাবে অস্বাভাবিক কিছু প্রবেশ করে তবে কেবল এটি গ্রহণ করুন - সম্ভাবনা কি তারা আপনার চেয়ে আরও ভাল জানেন।
মার্ক আমেরি

7
আসলে, আমি বলব যে "সম্ভাবনাগুলি" তারা ভুল করে চলেছে। এটি / হতে পারে / তাদের একটি খুব অস্বাভাবিক ইমেল ঠিকানা রয়েছে তবে আমি বলতে চাই যে আপনি বেশিরভাগ সময় কেবল কোনও ভুলের জায়গায় একটি সঠিক ইমেল ঠিকানা পেয়ে যাচ্ছেন যদি আপনি এটি বৈধকরণের পাসিং বন্ধ করে এবং অনুরোধ করেন ব্যবহারকারী পরীক্ষা করতে।
জেফ কেন্ডল

1
এর স্ট্রিংয়ের শুরু থেকে ম্যাচ শুরু হওয়া উচিত এবং এর সাথে উপরের কেস গ্রহণ করা উচিত এটি ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$
বোঝাতে এটির একটি ডলার থাকতে হবে

13

জন্য RFC 822 , অধ্যায় 6, বৃদ্ধি Backus-ঘর 'নর' ফরম (বিএনএফ) এ একটি ঠিকানা স্পেসিফিকেশন দেয়:

addr-spec   =  local-part "@" domain
local-part  =  word *("." word)
domain      =  sub-domain *("." sub-domain)

এই স্পেসিফিকেশন ব্যবহার a@bকরা একটি বৈধ ঠিকানা।

হালনাগাদ

ট্রেজকাজের মন্তব্যের উত্তর দেওয়ার জন্য, আমি নিম্নলিখিত সংজ্ঞাগুলি যুক্ত করছি। আমরা দেখতে পাচ্ছি যে স্পেসটি অনুমোদিত তবে কেবল উদ্ধৃত স্ট্রিংয়ে।

word          =  atom / quoted-string
atom          =  1*<any CHAR except specials, SPACE and CTLs>
quoted-string = <"> *(qtext/quoted-pair) <">
SPACE         =  <ASCII SP, space>
CTL           =  <any ASCII control character and DEL> 
qtext         =  <any CHAR excepting <">, "\" & CR, and including linear-white-space>
quoted-pair   =  "\" CHAR  

OTOH, আরএফসি 822 এছাড়াও আমাকে স্থানীয় অংশে ফাঁকা স্থান দেওয়ার অনুমতি দেয়, যা ক্রোম কমপক্ষে অনুমতি দিচ্ছে বলে মনে হয় না, তাই আমি নিশ্চিত নই যে তারা আরএফসিটি একটি রেফারেন্স হিসাবে ব্যবহার করেছে। (যদিও তাদের হওয়া উচিত!)
ট্রেজকাজ

8

এই এমডিএন পৃষ্ঠায় এটি দেখায় যে রেইগেক্স ব্রাউজারগুলি ইমেলটি বৈধ করতে ব্যবহার করা উচিত:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email#Validation

আপনি ডোমেন নামে কমপক্ষে একটি বিন্দুতে এই রেজেক্সটি সামান্য পরিবর্তন করতে পারেন: *রেজেক্সের শেষে তারকাটি একটি প্লাসে পরিবর্তন করুন +। তারপরে সেই রেজেক্সটি patternঅ্যাট্রিবিউট হিসাবে ব্যবহার করুন :

<input type="email" pattern="^[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])?)+$"></input>

3

আপনি ইমেল ক্ষেত্রের ধরণটি কাস্টমাইজ করতে পারেন:

input:valid {
  border-color: green
}

input:invalid {
  border-color: red
}
Email:
<input type="email" required value="a@b.c" /><br>

Non-dots Email:
<input type="email" required pattern="[^.]+@[^.]+" value="a@b.c" />


2

আপনি কীভাবে এইচটিএমএল 5 এর সাথে রেজেক্স প্যাটার্ন ব্যবহার করে এটি করতে পারেন তা এখানে। আপনি প্রদর্শন করতে একটি কাস্টম বার্তা অন্তর্ভুক্ত করতে পারেন।

<form>
  <input type="email" value="paul@test" required pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,63}$" title="Hey, you are missing domain part in the email !!!"/>
  <button type="submit">Click Me</button>
</form>


-5

এই নিদর্শনটি সর্বদা আমার পক্ষে কাজ করে।

পাঠ্য অবশ্যই ছোট হাতের অক্ষরে থাকতে হবে pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"তবে আমি মনে করি এটি কমবেশি বেশিরভাগ ইমেলকে কভার করে।

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