regex - كيفية التحقق من صحة عنوان بريد إلكتروني في JavaScript؟




validation email email-validation (25)

كيف يمكن التحقق من صحة عنوان البريد الإلكتروني في JavaScript؟


Answers

هناك شيء يجب أن تفهمه في المرة الثانية التي تقرر فيها استخدام تعبير عادي للتحقق من صحة رسائل البريد الإلكتروني: ربما لا تكون فكرة جيدة . بمجرد أن تتصالح مع ذلك ، هناك العديد من التطبيقات التي يمكن أن تصل إلى منتصف الطريق هناك ، هذه المقالة تلخصها بشكل رائع.

باختصار ، مع ذلك ، فإن الطريقة الوحيدة للتأكد بشكل مطلق ومباشر من أن ما أدخله المستخدم هو في الواقع بريد إلكتروني هو إرسال بريد إلكتروني بالفعل ومعرفة ما يحدث. بخلاف ذلك كله مجرد تخمينات.


تحديث regex 2018! جرب هذا

let val = '[email protected]';
if(/^[a-z0-9][a-z0-9-_\.][email protected]([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');
}

نسخة typscript كاملة

//
export const emailValid = (val:string):boolean => /^[a-z0-9][a-z0-9-_\.][email protected]([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


أنا أتطلع إلى حل هذه المشكلة. لذلك قمت بتعديل التحقق من صحة البريد الإلكتروني العادية أعلاه

لتمرير الأمثلة في عنوان البريد الإلكتروني في Wikipedia .

ويمكنك رؤية النتيجة here .


على ما يبدو ، هذا كل شيء:

/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~][email protected]((((([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 أكتوبر 2010.

لكن ، بالطبع ، هذا يتجاهل التدويل.


معرفتي بالتعبيرات العادية ليست جيدة. لهذا السبب أتحقق من الصيغة العامة مع تعبير عادي بسيط أولاً وتحقق من خيارات أكثر تحديدًا مع الوظائف الأخرى بعد ذلك. قد لا يكون هذا أفضل حل تقني ، لكن بهذه الطريقة أنا أكثر مرونة وأسرع.

أكثر الأخطاء شيوعًا التي صادفتها هي المسافات (خاصة في البداية والنهاية) وأحيانًا نقطة مزدوجة.

function check_email(val){
    if(!val.match(/\[email protected]\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('[email protected]'); // Returns false
check_email('[email protected]'); // Returns false
check_email(' [email protected]'); // Returns false
check_email('[email protected]'); // Returns true

على النقيض من squirtle ، هنا هو حل معقد ، لكنه يقوم بعمل جيد رائع من التحقق من صحة رسائل البريد الإلكتروني بشكل صحيح:

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('[email protected]')){ console.log('This is email is valid'); }

في المتصفحات الحديثة ، يمكنك بناء على إجابة @ Sushil باستخدام JavaScript الخالص و 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() : /\[email protected]\S+\.\S+/.test(value);
}

لقد وضعت مثالا في عزف http://jsfiddle.net/boldewyn/2b6d5/ . جنبا إلى جنب مع الكشف عن ميزة والتحقق من العظام العارية من إجابة Squirtle ، فإنه يحررك من مذبحة التعبير العادية ولا يحول على المتصفحات القديمة.


لقد قمت بتعديل إجابة جايمون قليلاً على الأشخاص الذين يريدون التحقق من الصحة البسيطة في شكل:

[email protected]

التعبير العادي:

/\[email protected]\S+\.\S+/

مثال على وظيفة JavaScript:

function validateEmail(email) 
{
    var re = /\[email protected]\S+\.\S+/;
    return re.test(email);
}

إليك مناقشة جيدة حول استخدام التعبيرات العادية للتحقق من صحة عناوين البريد الإلكتروني ؛ " http://fightingforalostcause.net/misc/2006/compare-email-regex.php "

في ما يلي التعبير العلوي الحالي ، وهو متوافق مع جافا سكريبت ، لأغراض مرجعية:

/^[-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

واو ، هناك الكثير من التعقيد هنا. إذا كان كل ما تريد فعله هو فقط فهم الأخطاء اللغوية الأكثر وضوحا ، سأفعل شيئًا كالتالي:

\[email protected]\S+

عادةً ما يكتشف الأخطاء الأكثر وضوحًا التي يصنعها المستخدم ويضمن أن النموذج في الغالب مناسب ، وهو ما تدور حوله ميزة التحقق من جافا سكريبت.


من المحتمل أن يكون استخدام التعبيرات العادية هو أفضل طريقة. يمكنك رؤية مجموعة من الاختبارات here (مأخوذة من chromium )

function validateEmail(email) {
    var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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());
}

إليك مثال التصفية العادية التي تقبل unicode:

var re = /^(([^<>()\[\]\.,;:\[email protected]\"]+(\.[^<>()\[\]\.,;:\[email protected]\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\[email protected]\"]+\.)+[^<>()[\]\.,;:\[email protected]\"]{2,})$/i;

ولكن ضع في اعتبارك أنه يجب ألا يعتمد المرء فقط على التحقق من جافا سكريبت. يمكن بسهولة تعطيل جافا سكريبت. يجب التحقق من صحة هذا على جانب الخادم كذلك.

إليك مثال على ما سبق في الإجراء:

function validateEmail(email) {
  var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[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() {
  var $result = $("#result");
  var 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").bind("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>


لمجرد اكتمالها ، لديك هنا تعديلا آخر متوافق مع RFC 2822

يعرف المعيار الرسمي بـ RFC 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])+)\])

(...) نحصل على تنفيذ أكثر عملية لـ RFC 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])?

تغيير آخر يمكنك إجراؤه هو السماح بأي مجال من مستويات المستوى الأعلى لرمز البلد المكون من حرفين ، ونطاقات مستوى أعلى عامة محددة فقط. يقوم هذا [email protected] عناوين البريد الإلكتروني الوهمية مثل [email protected] . ستحتاج إلى تحديثه عندما تتم إضافة نطاقات المستوى الأعلى الجديدة .

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[AZ]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b

لذلك حتى عند اتباع المعايير الرسمية ، لا تزال هناك مقايضات. لا تقم بنسخ التعبيرات العادية من المكتبات عبر الإنترنت أو منتديات المناقشة بشكل أعمى. اختبرها دائمًا على بياناتك الخاصة ومع تطبيقاتك الخاصة.

التركيز لي


تحتوي جميع عناوين البريد الإلكتروني على رمز "at" (أي @). اختبر هذا الشرط الضروري:

email.indexOf("@") > 0

لا تهتم بأي شيء أكثر تعقيدًا. حتى إذا كان بإمكانك تحديد ما إذا كان البريد الإلكتروني صالحًا من الناحية التجريبية ، فلن يخبرك ذلك ما إذا كان ينتمي إلى الشخص الذي قدمه. هذا ما يهم حقا.

لاختبار ذلك ، أرسل رسالة تحقق.


سرقت هذه من 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;}

لقد وجدت أن هذا هو الحل الأفضل:

/^[^\[email protected]][email protected][^\[email protected]]+\.[^\[email protected]]+$/

يسمح بالتنسيقات التالية:

1.  [email protected]
2.  [email protected]
3.  [email protected]
4.  [email protected]
9.  #!$%&'*+-/=?^_`{}|[email protected]
6.  "()[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~.a"@example.org
7.  " "@example.org (space between the quotes)
8.  üñîçøðé@example.com (Unicode characters in local part)
9.  üñîçøðé@üñîçøðé.com (Unicode characters in domain part)
10. Pelé@example.com (Latin)
11. δοκιμή@παράδειγμα.δοκιμή (Greek)
12. 我買@屋企.香港 (Chinese)
13. 甲斐@黒川.日本 (Japanese)
14. чебурашка@ящик-с-апельсинами.рф (Cyrillic)

من الواضح أنها متعددة الاستخدامات وتسمح بالحروف الدولية الهامة جدًا ، مع الاستمرار في فرض الشكل الأساسي لـ [email protected] ستقوم بحجب المساحات المسموح بها تقنياً بواسطة RFC ، لكنها نادرة جداً لدرجة أنني أشعر بالسعادة لفعل ذلك.


ما عليك سوى التحقق من صحة عنوان البريد الإلكتروني الذي تم إدخاله أو عدم استخدام HTML.

<input type="email"/>

ليست هناك حاجة لكتابة وظيفة للتحقق من الصحة.


يحتوي HTML5 نفسه على التحقق من البريد الإلكتروني. إذا كان المتصفح يدعم HTML5 ، فيمكنك استخدام الشفرة التالية.

<form><input type="email" placeholder="[email protected]">
    <input type="submit">
</form>

رابط jsFiddle

من مواصفات HTML5 :

عنوان البريد الإلكتروني صالح هو سلسلة تتطابق مع إنتاج email الخاص بـ ABNF التالي ، وهو مجموعة الأحرف التي يكون Unicode الخاص بها.

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 >

يعتبر هذا الشرط انتهاكًا متعمدًا لـ RFC 5322 ، والذي يحدد بنية عناوين البريد الإلكتروني التي تكون صارمة في نفس الوقت (قبل حرف "@") ، غامضة للغاية (بعد الحرف "@") ، والتراخي أيضًا (السماح بالتعليقات والأحرف البيضاء والمسارات المقتبسة في سلوكيات غير مألوفة لدى معظم المستخدمين) لتكون ذات فائدة عملية هنا.

التعبير العادي التالي JavaScript - و Perl متوافق مع تطبيق التعريف أعلاه.

/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-][email protected][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])?)*$/

هذا هو إصدار RFC822 الصحيح.

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);
}

من الصعب الحصول على مدقق بريد إلكتروني صحيح بنسبة 100٪. والطريقة الحقيقية الوحيدة لتصحيح ذلك هي إرسال بريد إلكتروني تجريبي إلى الحساب. ومع ذلك ، هناك بعض الضوابط الأساسية التي يمكن أن تساعد في التأكد من أنك تحصل على شيء معقول.

بعض الأشياء التي يجب تحسينها:

بدلاً من جديد RegExp، فقط جرّب كتابة regexpمثل هذا:

if (reg.test(/@/))

ثانيًا ، تحقق من أن الفترة تأتي بعد @العلامة ، وتأكد من أن هناك أحرف بين @s والنقاط.


استخدم هذا الرمز داخل وظيفة أداة التحقق من الصحة:

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
}

التعبير العادي الذي توفره Microsoft ضمن ASP.NET MVC هو

/^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$/

التي أقوم بنشرها هنا في حال كانت معيبة - رغم أنها كانت دائماً مثالية لاحتياجاتي.


أفضل regex من أي وقت مضى مما يؤكد مع RFC5322

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])+


لا يعد التحقق الصحيح من عنوان البريد الإلكتروني بما يتوافق مع RFC شيئًا يمكن تحقيقه باستخدام تعبير عادي منتظم. مقال يحتوي على أفضل حل وجدته في PHP هو ما هو عنوان بريد إلكتروني صالح؟ . من الواضح أنه تم نقله إلى جافا. أعتقد أن الوظيفة معقدة للغاية بحيث لا يمكن نقلها واستخدامها في JavaScript. منفذ جافا سكريبت / node.js: https://www.npmjs.com/package/email-addresses .

من الممارسات الجيدة التحقق من صحة بياناتك على العميل ، ولكن تحقق مرة أخرى من التحقق من الصحة على الخادم. مع وضع ذلك في الاعتبار ، يمكنك ببساطة التحقق مما إذا كانت السلسلة تبدو كعنوان بريد إلكتروني صالح على العميل وإجراء التدقيق الصارم على الخادم.

إليك وظيفة JavaScript التي أستخدمها للتحقق مما إذا كانت السلسلة تبدو كعنوان بريد صالحًا:

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 : يجب أن يكون Last @ قبل الأخير . لأن @ لا يمكن أن يكون جزء من اسم الخادم (بقدر ما أعرف).

  • lastAtPos > 0 : يجب أن يكون هناك شيء ما (اسم مستخدم البريد الإلكتروني) قبل آخر @ .

  • str.indexOf('@@') == -1 : يجب ألا يكون str.indexOf('@@') == -1 العنوان. حتى إذا ظهر @ كحرف أخير في اسم مستخدم البريد الإلكتروني ، فيجب أن يتم اقتباسه بحيث " سيكون بين @ و @ الأخير في العنوان.

  • lastDotPos > 2 : يجب أن يكون هناك ثلاثة أحرف على الأقل قبل النقطة الأخيرة ، على سبيل المثال [email protected] .

  • (str.length - lastDotPos) > 2 : يجب أن يكون هناك عدد كافٍ من الأحرف بعد النقطة الأخيرة لتشكيل نطاق من حرفين. لست متأكدا ما إذا كانت الأقواس ضرورية.


بناء جملة البريد القياسي في ويكيبيديا:

https://en.wikipedia.org/wiki/Email_address#Examples https://fr.wikipedia.org/wiki/Adresse_%C3%A9lectronique#Syntaxe_exacte

function validMail(mail)
{
    return /^(([^<>()\[\]\.,;:\[email protected]\"]+(\.[^<>()\[\]\.,;:\[email protected]\"]+)*)|(\".+\"))@(([^<>()\.,;\[email protected]\"]+\.{0,1})+([^<>()\.,;:\[email protected]\"]{2,}|[\d\.]+))$/.test(mail);
}

// VALID MAILS

validMail('[email protected]') // Return true
validMail('[email protected]') // Return true
validMail('[email protected]') // Return true
validMail('[email protected]') // Return true
validMail('[email protected]') // Return true
validMail('user+mailbox/[email protected]') // Return true
validMail('"very.(),:;<>[]\".VERY.\"[email protected]\\ \"very\".unusual"@strange.example.com') // Return true
validMail('!#$%&\'*+-/=?^_`.{|}[email protected]') // Return true
validMail('"()<>[]:,;@\\\"!#$%&\'-/=?^_`{}| ~.a"@example.org') // Return true
validMail('"[email protected]"@example.com') // Return true
validMail('"Fred Bloggs"@example.com') // Return true
validMail('"Joe.\\Blow"@example.com') // Return true
validMail('Loïc.Accentué@voilà.fr') // Return true
validMail('" "@example.org') // Return true
validMail('[email protected][IPv6:2001:DB8::1]') // Return true

// INVALID MAILS

validMail('Abc.example.com') // Return false
validMail('[email protected]@[email protected]') // Return false
validMail('a"b(c)d,e:f;g<h>i[j\k][email protected]') // Return false
validMail('just"not"[email protected]') // Return false
validMail('this is"not\[email protected]') // Return false
validMail('this\ still\"not\\[email protected]') // Return false
validMail('[email protected]') // Return false
validMail('[email protected]') // Return false

اعرض هذا الاختبار: https://regex101.com/r/LHJ9gU/1


الطريقة الشائعة لكتابة أسلوب contains JavaScript هي:

if (!String.prototype.contains) {
    String.prototype.contains = function (arg) {
        return !!~this.indexOf(arg);
    };
}

يتم استخدام عامل الإبطال الخاص بـ bitwise ( ~ ) لتحويل -1 إلى 0 (falsey) ، وتكون كافة القيم الأخرى غير صفرية (truthy).

يتم استخدام عوامل نفي منطقية مزدوجة لإلقاء الرقم في منطقي.







javascript regex validation email email-validation