জাভাস্ক্রিপ্টে কোনও ইমেল ঠিকানা যাচাই করার জন্য নিয়মিত প্রকাশ রয়েছে?
@
, ;com
ইত্যাদি) এবং ব্যবহারকারী সংশোধন তাদের দিন যদি তারা ইচ্ছুক (এবং যাই হোক না কেন তারা আমাকে পাঠাতে গ্রহণ)
জাভাস্ক্রিপ্টে কোনও ইমেল ঠিকানা যাচাই করার জন্য নিয়মিত প্রকাশ রয়েছে?
@
, ;com
ইত্যাদি) এবং ব্যবহারকারী সংশোধন তাদের দিন যদি তারা ইচ্ছুক (এবং যাই হোক না কেন তারা আমাকে পাঠাতে গ্রহণ)
উত্তর:
নিয়মিত এক্সপ্রেশন ব্যবহার করা সম্ভবত সেরা উপায়। আপনি এখানে একগুচ্ছ পরীক্ষা দেখতে পারেন ( ক্রোমিয়াম থেকে নেওয়া )
function validateEmail(email) {
const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
এখানে নিয়মিত এক্সপ্রেসনের উদাহরণ যা ইউনিকোডকে গ্রহণ করে:
const re = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
তবে মনে রাখবেন যে কেবলমাত্র জাভাস্ক্রিপ্টের বৈধতার উপর নির্ভর করা উচিত নয়। জাভাস্ক্রিপ্ট সহজেই অক্ষম করা যায়। এটি সার্ভারের পাশ দিয়েও বৈধ হওয়া উচিত।
এখানে কর্মের উপরোক্ত উদাহরণ রয়েছে:
function validateEmail(email) {
const re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
function validate() {
const $result = $("#result");
const email = $("#email").val();
$result.text("");
if (validateEmail(email)) {
$result.text(email + " is valid :)");
$result.css("color", "green");
} else {
$result.text(email + " is not valid :(");
$result.css("color", "red");
}
return false;
}
$("#validate").on("click", validate);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<p>Enter an email address:</p>
<input id='email'>
<button type='submit' id='validate'>Validate!</button>
</form>
<h2 id='result'></h2>
%2@gmail.com, "%2"@gmail.com, "a..b"@gmail.com, "a_b"@gmail.com, _@gmail.com, 1@gmail.com , 1_example@something.gmail.com
সবগুলি বৈধ, তবে Gmail কখনই এই ইমেল ঠিকানাগুলির কোনওটিকেই অনুমতি দেবে না। আপনার ইমেল ঠিকানাটি গ্রহণ করে এবং সেই ইমেল ঠিকানায় একটি ইমেল বার্তা প্রেরণ করে, কোনও কোড / লিঙ্ক সহ ব্যবহারকারীকে অবশ্যই বৈধতা নিশ্চিত করতে দেখতে যেতে হবে।
যারা আকারে সত্যিকারের সাধারণ বৈধতা চান তাদের জন্য আমি জ্যামনের উত্তরকে কিছুটা পরিবর্তন করেছি :
anystring@anystring.anystring
নিয়মিত প্রকাশ:
/\S+@\S+\.\S+/
জাভাস্ক্রিপ্ট ফাংশন উদাহরণ:
function validateEmail(email)
{
var re = /\S+@\S+\.\S+/;
return re.test(email);
}
console.log(validateEmail('anystring@anystring.anystring'));
name@again@example.com
। আপনার লাইনটি জাভাস্ক্রিপ্ট কনসোলে আটকানোর চেষ্টা করুন। আমি বিশ্বাস করি যে আপনার উদ্দেশ্যটি কেবলমাত্র পুরো পাঠ্যের সাথেই মিলবে, যার জন্য '^' পাঠ্যের শুরু এবং পাঠকের '$' অপারেটর প্রয়োজন হবে। আমি ব্যবহার করছি হয়/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test('name@again@example.com')
"very.unusual.@.unusual.com"@example.com
এটি একটি বৈধ ইমেল ঠিকানা। /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test('"very.unusual.@.unusual.com"@example.com') // false
। উফ।
@@@.@
? : ডি
কেবলমাত্র সম্পূর্ণতার জন্য, এখানে আপনার আর একটি আরএফসি 2822 অনুবর্তী রেগেক্স রয়েছে
অফিসিয়াল স্ট্যান্ডার্ডটি আরএফসি 2822 নামে পরিচিত । এটি বৈকল্পিক বর্ণনা করে যে বৈধ ইমেল ঠিকানাগুলি অবশ্যই মেনে চলা উচিত। আপনি করতে পারেন ( কিন্তু আপনি করা উচিত নয় - পড়তে ) এই রেগুলার এক্সপ্রেশন সঙ্গে এটি বাস্তবায়ন:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?: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]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
(...) আমরা ডাবল উদ্ধৃতি এবং বর্গাকার বন্ধনী ব্যবহার করে সিনট্যাক্স বাদ দিলে আমরা আরএফসি 2822 এর আরও ব্যবহারিক বাস্তবায়ন পাই। এটি আজও বাস্তব ব্যবহারের সমস্ত ইমেল ঠিকানার 99.99% এর সাথে মিলবে।
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
আপনি যে আরও পরিবর্তন করতে পারেন তা হ'ল যে কোনও দ্বি-বর্ণের দেশ কোড শীর্ষ স্তরের ডোমেন এবং কেবল নির্দিষ্ট জেনেরিক শীর্ষ স্তরের ডোমেনকে মঞ্জুরি দেওয়া। এই রেজেক্সটি ডামি ইমেল ঠিকানাগুলি ফিল্টার করে
asdf@adsf.adsf
। আপনি তা আপডেট করতে নতুন টপ লেভেল ডোমেইন যোগ করা হয় প্রয়োজন হবে ।
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b
এমনকি সরকারী মান অনুসরণ করার পরেও, এখনও বাণিজ্য-বন্ধ করতে হবে। অনলাইন লাইব্রেরি বা আলোচনা ফোরামগুলি থেকে নিয়মিত প্রকাশগুলি অন্ধভাবে অনুলিপি করবেন না। সর্বদা এগুলি আপনার নিজের ডেটা এবং আপনার নিজের অ্যাপ্লিকেশনগুলির সাথে পরীক্ষা করুন।
জোর আমার
{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_
{|} ~ -] +) * @ ((?: [a-z0-9] (?: [a-z0-9 -] * [a-z0-9])? \।) + [a-z0-9] [a-z0-9 -] * [a-z0-9] /
বাহ, এখানে অনেক জটিলতা রয়েছে। আপনি যা করতে চান তা যদি কেবল সর্বাধিক সুস্পষ্ট বাক্য গঠন ত্রুটি ধরা থাকে তবে আমি এই জাতীয় কিছু করব:
^\S+@\S+$
এটি সাধারণত সর্বাধিক সুস্পষ্ট ত্রুটিগুলি সনাক্ত করে যা ব্যবহারকারীরা তৈরি করে এবং আশ্বাস দেয় যে ফর্মটি বেশিরভাগই সঠিক, যা জাভাস্ক্রিপ্টের বৈধতা যাচাইয়ের বিষয়ে।
.+@.+
/\S+@\S+/.test("áéíóúý@ÁÉÍÓÚÝð")
true
ইমেলগুলি যাচাই করার জন্য আপনি নিয়মিত প্রকাশটি ব্যবহার করার সিদ্ধান্ত নেওয়ার দ্বিতীয়টি বোঝার কিছু রয়েছে: এটি সম্ভবত একটি ভাল ধারণা নয় । একবার আপনি এর সাথে শর্তাবলী অবতীর্ণ হয়ে গেলে, সেখানে অনেকগুলি বাস্তবায়ন রয়েছে যা আপনাকে অর্ধেকটা পথ পেতে পারে, এই নিবন্ধটি তাদের সুন্দরভাবে উপস্থাপন করবে।
সংক্ষেপে, তবে একেবারে, ইতিবাচকভাবে নিশ্চিত হওয়ার একমাত্র উপায় যে ব্যবহারকারী প্রবেশ করিয়েছে তা আসলে একটি ইমেল আসলে একটি ইমেল প্রেরণ করা হয় এবং কী ঘটে তা দেখতে হয়। এটি ব্যতীত এগুলি সবই অনুমান।
name_part@domain_part
এবং ব্যবহারিকভাবে একটি সহ কিছু, @
নাম_পার্টে বৈধ; ঠিকানাটি foo@bar@machine.subdomain.example.museum
বৈধ, যদিও এটি অবশ্যই পালাতে হবে foo\@bar@machine....
। ইমেলটি ডোমেনে পৌঁছে গেলে যেমন 'উদাহরণ.com' যে ডোমেনটি "স্থানীয়ভাবে" মেলটি রুট করতে পারে তাই "অদ্ভুত" ব্যবহারকারীর নাম এবং হোস্টনামের উপস্থিতি থাকতে পারে।
.us
ডোমেন আছে বা আমি +
বামে ব্যবহার করেছি বলে @
- অনেক জায়গায় এই গুরুতর ত্রুটি সংশোধন করেছেন, কিন্তু স্থানীয় অংশ (@ বাম) হতে পারে কিছু ডোমেইন মালিক চায়। -> "foo@bar.com"@example.com <- একটি বৈধ ইমেল ঠিকানা।
এইচটিএমএল 5 এর ইমেল বৈধতা রয়েছে। যদি আপনার ব্রাউজারটি HTML5 সমর্থন করে তবে আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন।
<form><input type="email" placeholder="me@example.com" required>
<input type="submit">
</form>
jsFizz লিঙ্ক
থেকে HTML5 এর বৈশিষ্ট :
একটি বৈধ ই-মেইল ঠিকানা হল একটি স্ট্রিং যা
email = 1*( atext / "." ) "@" label *( "." label ) label = let-dig [ [ ldh-str ] let-dig ] ; limited to a length of 63 characters by RFC 1034 section 3.5 atext = < as defined in RFC 5322 section 3.2.3 > let-dig = < as defined in RFC 1034 section 3.5 > ldh-str = < as defined in RFC 1034 section 3.5 >
এই প্রয়োজনীয়তাটি আরএফসি 5322 এর ইচ্ছাকৃত লঙ্ঘন যা ইমেল ঠিকানাগুলির জন্য একটি সিনট্যাক্স সংজ্ঞায়িত করে যা একই সাথে খুব কড়া ("@" চরিত্রের আগে), খুব অস্পষ্ট ("@" চরিত্রের পরে), এবং খুব শিথিল (মন্তব্যের অনুমতি দেয়) , বেশিরভাগ শ্বেত স্পেসের অক্ষর এবং বেশিরভাগ ব্যবহারকারীর কাছে অপরিচিত শিষ্টাচারে উদ্ধৃত স্ট্রিংগুলি এখানে ব্যবহারিক ব্যবহারের হতে পারে।
নিম্নলিখিত জাভাস্ক্রিপ্ট- এবং পার্ল-সামঞ্জস্যপূর্ণ নিয়মিত প্রকাশটি উপরের সংজ্ঞাটির একটি বাস্তবায়ন।
/^[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])?)*$/
form
ট্যাগের মধ্যে থাকা এবং একটি submit
ইনপুট দ্বারা জমা দেওয়া উচিত , যা প্রত্যেকেরই করার বিলাসিতা নেই। এছাড়াও, আপনি ত্রুটি বার্তাটি সত্যই স্টাইল করতে পারবেন না।
user@email
, উদাহরণস্বরূপ, পিএইচপি'র filter_var
তা গ্রহণ করে না। এটি সমস্যার কারণ হতে পারে।
আমি এটি সেরা সমাধান হিসাবে খুঁজে পেয়েছি:
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
এটি নিম্নলিখিত ফর্ম্যাটগুলির অনুমতি দেয়:
1. prettyandsimple@example.com 2. very.common@example.com ৩. ডিসপোজেবল.স্টাইল.ইমেল.উইথ + সায়সবোল@example.com 4. other.email-with-dash@example.com 9. #!$%&'*+-/=?^_`{}ype~@example.org 6. "() []:,; @ \\\"! # $% & '* + - / =? ^ _ `{} | ~ .A "@ example.org ". "" @ example.org (উদ্ধৃতিগুলির মধ্যে স্থান) ৮. ex@example.com (স্থানীয় অংশে ইউনিকোডের অক্ষর) 9. üñîçøðé@üñîçøðé.com (ডোমেন অংশে ইউনিকোড অক্ষর) 10. Pelé@example.com (লাতিন) ১১. δοκιμή@παράδειγμα.δοκιμή (গ্রীক) 12. 我 買 @ 屋企। 香港 (চীনা) 13. 甲 斐 @ 黒 川। 日本 (জাপানি) 14. чебурашка@ящик-с-апельсинами.рф (সিরিলিক)
এটি স্পষ্টতই বহুমুখী এবং তবুও মৌলিক যেকোন কিছু @ কোনও কিছুর বিন্যাস প্রয়োগ করার সময় সমস্ত গুরুত্বপূর্ণ আন্তর্জাতিক চরিত্রগুলিকে মঞ্জুরি দেয়। এটি আরএফসি দ্বারা প্রযুক্তিগতভাবে অনুমোদিত স্থানগুলিকে ব্লক করবে, তবে এগুলি এত বিরল যে আমি এটি করতে পেরে খুশি।
@
হিসাবে ভুলে যান .
। কারণ হিসাবে আমাদের সার্ভার-সাইডে আরও নিয়ন্ত্রক হতে হবে।
username@domain.com
এই প্যাটার্নটির সাথে কাজ করে না
a@b@c@d.x.y.@.z
তবে তারা কি খারাপ সময় কাটানোর যোগ্য? : ডি
আধুনিক ব্রাউজারে তোমাদের @ বিশুদ্ধ জাভাস্ক্রিপ্ট এবং সুশীল এর উত্তর উপরে নির্মাণ করতে পারেন করে DOM :
function validateEmail(value) {
var input = document.createElement('input');
input.type = 'email';
input.required = true;
input.value = value;
return typeof input.checkValidity === 'function' ? input.checkValidity() : /\S+@\S+\.\S+/.test(value);
}
আমি একসাথে ফ্রেডে একটি উদাহরণ রেখেছি http://jsfizz.net/boldewyn/2b6d5/ । বৈশিষ্ট্য সনাক্তকরণ এবং স্নিগ্ধের উত্তর থেকে খালি-হাড়ের বৈধতার সাথে মিলিত , এটি আপনাকে নিয়মিত অভিব্যক্তি গণহত্যা থেকে মুক্তি দেয় এবং পুরানো ব্রাউজারগুলিতে বিরক্ত হয় না।
.@a
মতো বৈধতা দেয় true
।
এটি সঠিক আরএফসি 822 সংস্করণ।
function checkEmail(emailAddress) {
var sQtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
var sDtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
var sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
var sQuotedPair = '\\x5c[\\x00-\\x7f]';
var sDomainLiteral = '\\x5b(' + sDtext + '|' + sQuotedPair + ')*\\x5d';
var sQuotedString = '\\x22(' + sQtext + '|' + sQuotedPair + ')*\\x22';
var sDomain_ref = sAtom;
var sSubDomain = '(' + sDomain_ref + '|' + sDomainLiteral + ')';
var sWord = '(' + sAtom + '|' + sQuotedString + ')';
var sDomain = sSubDomain + '(\\x2e' + sSubDomain + ')*';
var sLocalPart = sWord + '(\\x2e' + sWord + ')*';
var sAddrSpec = sLocalPart + '\\x40' + sDomain; // complete RFC822 email address spec
var sValidEmail = '^' + sAddrSpec + '$'; // as whole string
var reValidEmail = new RegExp(sValidEmail);
return reValidEmail.test(emailAddress);
}
জাভাস্ক্রিপ্ট একটি নিয়মিত প্রকাশের সাথে মেলে:
emailAddress.match( / some_regex /);
ইমেলগুলির জন্য এখানে একটি আরএফসি 22 নিয়মিত প্রকাশ রয়েছে:
^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*
"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x
7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<
!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])
[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$
(?>
ব্যাকট্র্যাকিং বন্ধ করা এবং (?<angle><)…(?(angle)>)
দীর্ঘায়িত প্রদান এড়ানোর জন্য কিছু বেমানান এক্সটেনশান ব্যবহার করে |
।
সমস্ত ইমেল ঠিকানাগুলিতে একটি 'at' (ie @) চিহ্ন থাকে symbol প্রয়োজনীয় শর্ত পরীক্ষা করুন:
email.indexOf("@") > 0
আরও জটিল কিছু নিয়ে বিরক্ত করবেন না। এমনকি যদি আপনি কোনও ইমেল আরএফসি-সিন্ট্যাক্টিকালি বৈধ কিনা তা পুরোপুরি নির্ধারণ করতে পারতেন তবে এটি আপনাকে সরবরাহ করবে না এমন ব্যক্তির সাথে সম্পর্কিত কিনা তা আপনাকে জানায় না। এটাই আসলে গুরুত্বপূর্ণ।
এটি পরীক্ষা করতে, একটি বৈধতা বার্তা প্রেরণ করুন।
আরএফসিগুলির সাথে সম্মতিতে ইমেল ঠিকানার সঠিক বৈধতা এমন কোনও জিনিস নয় যা ওয়ান-লাইনার নিয়মিত প্রকাশের সাথে অর্জন করা যায়। আমি পিএইচপি-তে সন্ধান পেয়েছি সেরা সমাধান সহ একটি নিবন্ধটি একটি বৈধ ইমেল ঠিকানা কী? । স্পষ্টতই, এটি জাভাতে পোর্ট করা হয়েছে। আমি মনে করি ফাংশনটি জাভাস্ক্রিপ্টে পোর্ট করা এবং ব্যবহারের জন্য খুব জটিল। জাভাস্ক্রিপ্ট / নোড.জেএস পোর্ট: https://www.npmjs.com/package/email-addresses ।
একটি ভাল অনুশীলন হ'ল ক্লায়েন্টে আপনার ডেটা যাচাই করা, তবে সার্ভারে বৈধতাটি ডাবল-চেক করুন। এটি মনে রেখে, আপনি কেবল ক্লায়েন্টের কোনও স্ট্রিং বৈধ ইমেল ঠিকানার মতো দেখতে পাচ্ছেন কিনা এবং সার্ভারে কঠোর চেক করতে পারেন।
আমি এখানে জাভাস্ক্রিপ্ট ফাংশনটি যাচ্ছি তা পরীক্ষা করতে ব্যবহার করি যে কোনও স্ট্রিং কোনও বৈধ মেইল ঠিকানার মতো দেখাচ্ছে:
function looksLikeMail(str) {
var lastAtPos = str.lastIndexOf('@');
var lastDotPos = str.lastIndexOf('.');
return (lastAtPos < lastDotPos && lastAtPos > 0 && str.indexOf('@@') == -1 && lastDotPos > 2 && (str.length - lastDotPos) > 2);
}
ব্যাখ্যা:
lastAtPos < lastDotPos
: শেষটি @
সর্বশেষের আগে হওয়া উচিত .
কারণ @
সার্ভার নামের অংশ হতে পারে না (যতদূর আমি জানি)।
lastAtPos > 0
: শেষের আগে কিছু (ইমেল ব্যবহারকারীর নাম) থাকা উচিত @
।
str.indexOf('@@') == -1
: @@
ঠিকানার মধ্যে কোনও হওয়া উচিত নয় । এমনকি যদি @
তাই ই-মেইল ব্যবহারকারীর নাম শেষ অক্ষর হিসাবে প্রদর্শিত হবে, এটা উদ্ধৃত করা হয়েছে "
যে এর মধ্যে হতে হবে @
এবং শেষ @
ঠিকানা হবে।
lastDotPos > 2
: উদাহরণস্বরূপ, শেষ বিন্দুটির আগে কমপক্ষে তিনটি অক্ষর থাকা উচিত a@b.com
।
(str.length - lastDotPos) > 2
: দ্বি-অক্ষরের ডোমেন গঠনের জন্য শেষ বিন্দুর পরে পর্যাপ্ত অক্ষর থাকতে হবে। বন্ধনী আবশ্যক কিনা তা আমি নিশ্চিত নই।
@
ইমেল ব্যবহারকারীর নামটিতে শেষ চরিত্র হিসাবে উপস্থিত হলেও, এটি উদ্ধৃত "
করতে হবে ঠিকানার মধ্যে @
এবং শেষের @
মধ্যে।" কি হবে "@@"@example.com
?
এটি http://codesnippets.joyent.com/posts/show/1917 থেকে চুরি করা হয়েছিল
email = $('email');
filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (filter.test(email.value)) {
// Yay! valid
return true;
}
else
{return false;}
.museum
.travel
.
{2,4}
কেবল এটির একটি কার্যকর সূচক (যেমন "আপনি যখন ত্রুটিটি দেখেন, অন্যরাও সম্ভবত আশেপাশে থাকে")। সবচেয়ে মৌলিক এক অভাব +
স্থানীয় অংশে; উপরের কমিট করা সমস্ত ত্রুটি চিহ্নিত করতে এই মন্তব্য বাক্সটি খুব ছোট ।
return filter.test(email.value);
?
xn--clchc0ea0b2g2a9gcd
)। তবুও সমস্যা নেই?
এটা কর:
[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])?
কেন? এটি আরএফসি 2822 এর উপর ভিত্তি করে , যা একটি মানক সমস্ত ইমেল ঠিকানা মেনে চলা উচিত। এবং আমি নিশ্চিত নই যে আপনি কেন "সরল" কিছু নিয়ে বিরক্ত করবেন ... আপনি যেভাবেই অনুলিপি করে পেস্ট করবেন;)
প্রায়শই ডাটাবেসে ইমেল ঠিকানাগুলি সংরক্ষণ করার সময় আমি সেগুলি ছোট করে রাখি এবং বাস্তবে, রেজেক্সগুলি সাধারণত সংবেদনশীল হিসাবে চিহ্নিত করা যায়। এই ক্ষেত্রে এটি সামান্য খাটো:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
জাভাস্ক্রিপ্টে এটি ব্যবহারের একটি উদাহরণ এখানে রয়েছে (শেষে কেস সংবেদনশীল পতাকা i
সহ)।
var emailCheck=/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
console.log( emailCheck.test('some.body@domain.co.uk') );
দ্রষ্টব্য :
প্রযুক্তিগতভাবে কিছু ইমেলগুলি উদ্ধৃতি @
চিহ্নের অভ্যন্তরে অব্যাহত অক্ষরের সাথে চিহ্নের আগে বিভাগে কোটস অন্তর্ভুক্ত করতে পারে (যাতে আপনার ইমেল ব্যবহারকারীর অশ্লীল হতে পারে এবং স্টাট থাকতে পারে @
এবং "..."
যতক্ষণ তা উদ্ধৃতিতে লেখা থাকে)। কেউ এই কখনও করেনি! এটি অপ্রচলিত। তবে, এটি সত্য আরএফসি 2822 স্ট্যান্ডার্ডের অন্তর্ভুক্ত এবং এখানে বাদ দেওয়া হয়েছে it
/i
নিয়মিত এক্সপ্রেশন শেষে পতাকাটির কারণে জাভাস্ক্রিপ্ট কোড সংবেদনশীল নয় কনডাল । আমি এটি উল্লেখ করি যে এটি কেস-সংবেদনশীল তুলনা করা দরকার, তবে আমি এটি আরও পরিষ্কার করে দেব।
আমি সত্যিই এই সমস্যাটি সমাধানের অপেক্ষায় রয়েছি। তাই আমি উপরে ইমেল বৈধতা নিয়মিত প্রকাশ প্রকাশ করেছি
মূল
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
সংশোধিত
/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()\.,;\s@\"]+\.{0,1})+[^<>()\.,;:\s@\"]{2,})$/
উইকিপিডিয়া ইমেল ঠিকানার উদাহরণগুলি পাস করতে ।
এবং আপনি ফলাফল এখানে দেখতে পারেন ।
john..doe@example.com
সঠিক হতে হবে না? এটি একটি বৈধ কোণার কেস।
কোনও ইনপুট স্ট্রিং এটি ইমেল কিনা তা যাচাই করার জন্য আপনার নিয়মিত অভিব্যক্তি ব্যবহার করা উচিত নয়। এটি খুব জটিল এবং সমস্ত কেস কভার করবে না।
এখন যেহেতু আপনি কেবল 90% কেস কভার করতে পারেন তাই কিছু লিখুন:
function isPossiblyValidEmail(txt) {
return txt.length > 5 && txt.indexOf('@')>0;
}
আপনি এটি পরিমার্জন করতে পারেন। উদাহরণস্বরূপ, 'আআ @ @' বৈধ। তবে সামগ্রিকভাবে আপনি সারাংশ পাবেন। এবং বাহিত হবেন না ... একটি সাধারণ 90% সমাধান কার্যকর হয় না 100% সমাধানের চেয়ে ভাল।
বিশ্বের সহজ কোড দরকার ...
(.+)@(.*)
একই জিনিস, এবং খাটো।
প্রবেশ করা ইমেল ঠিকানাটি বৈধ কিনা তা এইচটিএমএল ব্যবহার না করে কেবল তা পরীক্ষা করে দেখুন।
<input type="email"/>
বৈধতার জন্য কোনও ফাংশন লেখার দরকার নেই।
কোনও ইমেল বৈধকারী 100% সঠিক পাওয়া শক্ত It's এটি সঠিক হওয়ার একমাত্র আসল উপায় হ'ল অ্যাকাউন্টে একটি পরীক্ষার ইমেল প্রেরণ করা। এটি বলেছিল, কয়েকটি বেসিক চেক রয়েছে যা নিশ্চিত করতে সহায়তা করতে পারে যে আপনি যুক্তিসঙ্গত কিছু পাচ্ছেন।
উন্নত করার জন্য কিছু জিনিস:
নতুনের পরিবর্তে RegExp
, কেবল এইভাবে লেখার চেষ্টা করুন regexp
:
if (reg.test(/@/))
দ্বিতীয়ত, @
সাইন-এর পরে একটি পিরিয়ড আসে কিনা তা পরীক্ষা করে দেখুন এবং নিশ্চিত করুন যে @
এস এবং পিরিয়ডের মধ্যে অক্ষর রয়েছে ।
এই হল কিভাবে নোড-যাচাইকারী এটা আছে:
/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[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]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/
আপনার বৈধকরণকারী ফাংশনের ভিতরে এই কোডটি ব্যবহার করুন:
var emailID = document.forms["formName"]["form element id"].value;
atpos = emailID.indexOf("@");
dotpos = emailID.lastIndexOf(".");
if (atpos < 1 || ( dotpos - atpos < 2 ))
{
alert("Please enter correct email ID")
return false;
}
অন্যথায় আপনি jQuery ব্যবহার করতে পারেন । ভিতরে নিয়ম সংজ্ঞায়িত:
eMailId: {
required: true,
email: true
}
abc@xyz
এটি পুরোপুরি বৈধ ইমেল যা আপনার রেজেক্স দ্বারা স্বীকৃত নয়।
abc@tld
একটি বৈধ ইমেইল ঠিকানা।
রেগেক্স আপডেট 2018! এটা চেষ্টা কর
let val = 'email@domain.com';
if(/^[a-z0-9][a-z0-9-_\.]+@([a-z]|[a-z0-9]?[a-z0-9-]+[a-z0-9])\.[a-z0-9]{2,10}(?:\.[a-z]{2,10})?$/.test(val)) {
console.log('passed');
}
টাইপস্ক্রিপ্ট সংস্করণ সম্পূর্ণ
//
export const emailValid = (val:string):boolean => /^[a-z0-9][a-z0-9-_\.]+@([a-z]|[a-z0-9]?[a-z0-9-]+[a-z0-9])\.[a-z0-9]{2,10}(?:\.[a-z]{2,10})?$/.test(val);
আরও তথ্য https://git.io/vhEfc
এই প্রশ্নের প্রায় সমস্ত উত্তর ইমেল ঠিকানাগুলি বৈধ করতে Regex ব্যবহার করার পরামর্শ দেয়। আমি মনে করি রেগেক্স কেবলমাত্র প্রাথমিক বৈধতার জন্যই ভাল। মনে হচ্ছে ইমেল ঠিকানাগুলির যাচাইকরণ যাচাইকরণ আসলে দুটি পৃথক সমস্যা:
1- ইমেল ফর্ম্যাটটির বৈধতা: নিশ্চিত হওয়া নিশ্চিত করা হচ্ছে যে ইমেলটি আরএফসি 5322-তে ইমেলের বিন্যাস এবং প্যাটার্নটির সাথে সম্মতি জানায় এবং যদি টিএলডি আসলে উপস্থিত থাকে। সমস্ত বৈধ টিএলডিগুলির একটি তালিকা এখানে পাওয়া যাবে ।
উদাহরণস্বরূপ, যদিও ঠিকানাটি example@example.ccc
রেজেক্সটি পাস করবে, এটি বৈধ ইমেল নয়, কারণ ccc
আইএএনএ দ্বারা কোনও শীর্ষ স্তরের ডোমেন নয়।
2- ইমেলটি আসলে বিদ্যমান কিনা তা নিশ্চিত করা: এটি করার জন্য একমাত্র বিকল্পটি হল ব্যবহারকারীদের ইমেল প্রেরণ ।
ইমেল ঠিকানা যাচাইয়ের জন্য রেজেেক্স
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])+
ইমেল ঠিকানাগুলি যাচাই করতে নিয়মিত এক্সপ্রেশন ব্যবহার করার বিষয়ে এখানে খুব ভাল আলোচনা রয়েছে; " নিয়মিত অভিব্যক্তি বৈধকরণের ই-মেইল ঠিকানার তুলনা "
রেফারেন্সের উদ্দেশ্যে, এখানে শীর্ষস্থানীয় এক্সপ্রেশনটি জাভাস্ক্রিপ্টের সাথে সামঞ্জস্যপূর্ণ:
/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
.jobs
। এছাড়াও, লাইভ আইডিএন রয়েছে (যার মধ্যে বেশিরভাগ, আমি স্বীকার করি, কেবলমাত্র আপনার পোস্টের পরে অনুমোদিত হয়েছিল - যেমন .中國
জুন ২০১০; তবে বেশিরভাগ বছর ধরে কাজ চলছে) in
স্পষ্টতই, এটি:
/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i
Http://fightingforalostcause.net/misc/2006/compare-email-regex.php থেকে 1 অক্টোবর '10 তে নেওয়া হয়েছে ।
তবে, অবশ্যই, এটি আন্তর্জাতিকীকরণকে উপেক্ষা করছে।
কাঠবিড়ালি থেকে বিপরীতে , এখানে একটি জটিল সমাধান, তবে এটি ইমেলগুলি যথাযথভাবে যাচাই করার একটি দুর্দান্ত কাজ করেছে:
function isEmail(email) {
return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(email);
}
এর মতো ব্যবহার করুন:
if (isEmail('youremail@yourdomain.com')){ console.log('This is email is valid'); }
== true
আপনার উদাহরণ।
নিয়মিত প্রকাশের বিষয়ে আমার জ্ঞান তেমন ভাল নয়। এজন্য আমি প্রথমে একটি সাধারণ নিয়মিত প্রকাশের সাথে সাধারণ বাক্য গঠনটি পরীক্ষা করি এবং পরে অন্যান্য ক্রিয়াকলাপগুলির সাথে আরও নির্দিষ্ট বিকল্পগুলি পরে পরীক্ষা করি। এটি সেরা প্রযুক্তিগত সমাধান নাও হতে পারে তবে এই পথে আমি আরও নমনীয় এবং দ্রুত।
আমি যে সাধারণ ত্রুটিগুলি পেয়েছি সেগুলি হ'ল স্পেস (বিশেষত শুরু এবং শেষের দিকে) এবং মাঝে মাঝে একটি ডাবল ডট।
function check_email(val){
if(!val.match(/\S+@\S+\.\S+/)){ // Jaymon's / Squirtle's solution
// Do something
return false;
}
if( val.indexOf(' ')!=-1 || val.indexOf('..')!=-1){
// Do something
return false;
}
return true;
}
check_email('check@thiscom'); // Returns false
check_email('check@this..com'); // Returns false
check_email(' check@this.com'); // Returns false
check_email('check@this.com'); // Returns true
<form name="validation" onSubmit="return checkbae()">
Please input a valid email address:<br />
<input type="text" size=18 name="emailcheck">
<input type="submit" value="Submit">
</form>
<script language="JavaScript1.2">
var testresults
function checkemail(){
var str = document.validation.emailcheck.value
var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
if (filter.test(str))
testresults = true
else {
alert("Please input a valid email address!")
testresults = false
}
return (testresults)
}
</script>
<script>
function checkbae(){
if (document.layers || document.getElementById || document.all)
return checkemail()
else
return true
}
</script>
আমি জেএসে একটি রেইজেক্সের সন্ধান করছিলাম যা সমস্ত ইমেল ঠিকানা পরীক্ষার কেসগুলি পাস করে:
email@example.com
বৈধ ইমেইল
firstname.lastname@example.com
ইমেল ঠিকানা ক্ষেত্রের বিন্দু রয়েছে
email@subdomain.example.com
ইমেলটিতে সাবডোমেন সহ ডট থাকে
firstname+lastname@example.com
প্লাস চিহ্নটি বৈধ চরিত্র হিসাবে বিবেচিত হয়
email@192.0.2.123
ডোমেনটি বৈধ আইপি ঠিকানা
email@[192.0.2.123]
আইপি ঠিকানার চারপাশে স্কোয়ার ব্র্যাকেটটি বৈধ হিসাবে বিবেচিত হয়
“email”@example.com
ইমেলের চারপাশে উদ্ধৃতিগুলি বৈধ বলে বিবেচিত হয়
1234567890@example.com
ঠিকানার অঙ্কগুলি বৈধ
email@domain-one.example
ডোমেন নামের ড্যাশ বৈধ
_______@example.com
অ্যাড্রেস ফিল্ডে ইন্ডস্কোর বৈধ
email@example.name
.name
বৈধ শীর্ষ স্তরের ডোমেন নাম
email@example.co.jp
শীর্ষ স্তরের ডোমেন নামের মধ্যে ডটকেও বৈধ বলে মনে করা হয় ( co.jp
উদাহরণ হিসাবে এখানে ব্যবহার করে )
firstname-lastname@example.com
ঠিকানার ক্ষেত্রে ড্যাশ কার্যকর
এখানে আমরা যাচ্ছি:
বা রেজেক্স:
Regex = /(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@[*[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+]*/
নিয়মিত মধ্যে মাইক্রোসফট কর্তৃক প্রদত্ত মত প্রকাশের ASP.NET MVC হয়
/^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$/
এটি ত্রুটিযুক্ত হওয়ার ক্ষেত্রে আমি এখানে যা পোস্ট করি তা যদিও এটি সর্বদা আমার প্রয়োজনের জন্য নিখুঁত।