JQuery का उपयोग करके ईमेल सत्यापन


356

मैं jQuery के लिए नया हूं और सोच रहा था कि ईमेल पते को मान्य करने के लिए इसका उपयोग कैसे किया जाए।


ईमेल पते को "मान्य" करने की कोशिश करने से पहले, आपको इसे पढ़ना चाहिए: hackernoon.com/…
मिको रानाल्टेन

जवाबों:


703

आप उसके लिए नियमित पुरानी जावास्क्रिप्ट का उपयोग कर सकते हैं:

function isEmail(email) {
  var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  return regex.test(email);
}

66
हाँ, यह याद होगा jQuery अभी भी जावास्क्रिप्ट है :)
Fabian

36
भले ही यह regexp अधिकांश वास्तविक विश्व पतों को वैध मानता है, फिर भी इसमें बहुत सारी गलत सकारात्मकता और गलत नकारात्मकताएँ हैं। उदाहरण के लिए, विकिपीडिया पर मान्य और अमान्य ईमेल पतों के उदाहरण देखें ।
आर्सेनी

1
@Umingo ईमेल@127.0.0.1 अभी भी वैध ई-मेल है, हालांकि, यह अभी भी बेहतर तरीके से लिखा जा सकता है। डोमेन का कोई भी भाग [a-z0-9] (असंवेदनशील) के अलावा अन्य चार से शुरू नहीं हो सकता है। इसके अलावा, वैध ई-मेल (और डोमेन) में कुछ लेन सीमा होती है, जिसका परीक्षण भी नहीं किया जाता है।
टॉम जूल

10
नए शीर्ष स्तर के डोमेन अधिक सामान्य हो जाने से इस रेगेक्स को संशोधित करने की आवश्यकता हो सकती है। सिस्टम और .poker आदि सभी मान्य TLD हैं, लेकिन रीजेक्स चेक विफल हो जाएगा
Liath

3
एक अन्य जवाब पर थियो की टिप्पणी के अनुसार, आपको नए TLD जैसे .म्यूजियम, आदि का समर्थन var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;करने के var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,6})+$/;लिए बदलना चाहिए
इरा हरमन

164

ईमेल को मान्य करने के लिए jQuery फंक्शन

मुझे वास्तव में प्लगइन्स का उपयोग करना पसंद नहीं है, खासकर जब मेरे फॉर्म में केवल एक फ़ील्ड है जिसे मान्य करने की आवश्यकता है। मैं इस फ़ंक्शन का उपयोग करता हूं और जब भी मुझे ईमेल फॉर्म फ़ील्ड को मान्य करने की आवश्यकता होती है, तब इसे कॉल करता हूं।

 function validateEmail($email) {
  var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
  return emailReg.test( $email );
}

और अब इस का उपयोग करने के लिए

if( !validateEmail(emailaddress)) { /* do stuff here */ }

चीयर्स!


16
आपको बस वापस आना चाहिएemailReg.test($email);
nffdiogosilva

7
सिर्फ FYI करें यह रिक्त ईमेल पते के लिए सही है। उदा emailReg.text("") true। मैं बस ईमेल की घोषणा के लिए नीचे काम करता हूँ फिर भी इस var:return ( $email.length > 0 && emailReg.test($email))
Diziet

14
के बाद से अब हम .museum की तरह 6 अक्षरों के साथ domainname एक्सटेंशन है EMAILADDRESS वैधता की जाँच के लिए रेगुलर एक्सप्रेशन से पुरानी है, तो इसके आप बदलना चाहते हैं जाएगा var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;करने के लिएvar emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,6})?$/;
थियो

3
सही आप @ h.coates हैं! मैं इस थ्रेड से यह उम्मीद कर रहा था कि jQuery वास्तव में एक ईमेल सत्यापन में बनाया गया था। साथ ले जाएँ, ये आप के लिए देख रहे हैं droids नहीं कर रहे हैं ...
iGanja

3
@ थियो का बिंदु महत्वपूर्ण है, लेकिन TLD की वास्तविक लंबाई 6 से अधिक होनी चाहिए, विस्तार के लिए सैद्धांतिक ऊपरी सीमा 63 वर्ण है। वर्तमान में सबसे लंबा 20 से अधिक है देखें data.iana.org/TLD/tlds-alpha-by-domain.txt
Jeroenv3

41

मैं कुछ कारणों के लिए jQuery सत्यापन प्लगइन का उपयोग करेगा ।

आपने मान्य किया, ठीक है महान, अब क्या? आपको त्रुटि प्रदर्शित करने की आवश्यकता है, जब यह वैध है, तो इसे मिटा दें, यह दिखाते हुए कि कुल कितनी त्रुटियां हैं? बहुत सी चीजें हैं जो आपके लिए संभाल सकती हैं, पहिया को फिर से आविष्कार करने की आवश्यकता नहीं है।

इसके अलावा, इसका एक और बड़ा लाभ यह है कि इसे CDN पर होस्ट किया जाता है, इस उत्तर के वर्तमान संस्करण को यहां पाया जा सकता है: http://www.asp.net/ajaxLibrary/CDNjQueryValidate16.ashx इसका मतलब है कि क्लाइंट के लिए यह लोड का तेज समय है।


6
ठीक है ... पहिया को सुदृढ़ करने की कोई आवश्यकता नहीं है। लेकिन मुझे एक क्षेत्र को मान्य करने के लिए जावास्क्रिप्ट के दर्जनों क्यूबाइट क्यों स्थापित करने हैं। यह एक कार कारखाने के निर्माण की तरह है अगर आपको ज़रूरत है एक नया पहिया :)
क्राफ्ट

3
@kraftb जैसा कि मेरे उत्तर में कहा गया है, यह केवल पाठ को ही मान्य नहीं करते हुए मान्यता के आसपास का संचालन और प्रदर्शन है।
निक Craver

5
इस @NickCraver के लिए धन्यवाद: यह वास्तव में एक ईमेल के लिए सत्यापन से निपटने की समस्या के लिए एक "सर्वोत्तम अभ्यास" दृष्टिकोण है। यह निश्चित रूप से एक पहिया बनाने के लिए एक कारखाने का निर्माण करने (सभी काम करने के लिए कामों को लिखने) की तरह नहीं है। यह एक आधुनिक वाहन पर पहिया स्थापित करने के लिए कारखाने से निर्देशों का पालन करने जैसा है (जैक कार ऊपर, पहिया लगाओ - गले पागल पर डाल) यह जानने की कोशिश करने के बजाय कि आपकी कार पर एक वैगन व्हील कैसे मिलता है। यह प्लगइन उपयोग करने के लिए सुपर सरल है। फ़ॉर्म सत्यापन को करने के लिए यह शाब्दिक रूप से शामिल है, कुछ एनोटेशन और एक एकल विधि कॉल है।
jfgrissom

3
अब आप 'रीइन्वेंटिंग द व्हील' रूपक को फिर से विकसित कर रहे हैं!
डोम विनयार्ड


38

पर देखो http: //bassistance.de/jquery-plugins/jquery-plugin-validation/ । यह अच्छा jQuery प्लगइन है, जो रूपों के लिए शक्तिशाली सत्यापन प्रणाली बनाने की अनुमति देता है। यहाँ कुछ उपयोगी नमूने हैं । तो, प्रपत्र में ईमेल फ़ील्ड सत्यापन ऐसा दिखेगा:

$("#myform").validate({
  rules: {
    field: {
      required: true,
      email: true
    }
  }
});

विवरण और नमूनों के लिए ईमेल विधि प्रलेखन देखें ।


1
आखिरी वाला अभी भी जीवित है)
एंड्रयू बश्टनिक

6
लेकिन स्वीकृत प्रारूप x@x(अजीब है) यह x@x.xमुझे कैसे तय कर सकता है?
बशीर AL-MOMANI

2
@ बशीरलाल-मोमानी [ jqueryvalidation.org/jQuery.validator.methods/] $.validator.methods.email = function( value, element ) { return this.optional( element ) || //^.+@.+\..+$/.test( value ); }
बिल

16
<script type="text/javascript">
    $(document).ready(function() {
      $('.form_error').hide();
      $('#submit').click(function(){
           var name = $('#name').val();
           var email = $('#email').val();
           var phone = $('#phone').val();
           var message = $('#message').val();
           if(name== ''){
              $('#name').next().show();
              return false;
            }
            if(email== ''){
               $('#email').next().show();
               return false;
            }
            if(IsEmail(email)==false){
                $('#invalid_email').show();
                return false;
            }

            if(phone== ''){
                $('#phone').next().show();
                return false;
            }
            if(message== ''){
                $('#message').next().show();
                return false;
            }
            //ajax call php page
            $.post("send.php", $("#contactform").serialize(),  function(response) {
            $('#contactform').fadeOut('slow',function(){
                $('#success').html(response);
                $('#success').fadeIn('slow');
               });
             });
             return false;
          });
      });
      function IsEmail(email) {
        var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        if(!regex.test(email)) {
           return false;
        }else{
           return true;
        }
      }
  </script>

<form action="" method="post" id="contactform">
                            <table class="contact-table">
                              <tr>
                                <td><label for="name">Name :</label></td>
                                <td class="name"> <input name="name" id="name" type="text" placeholder="Please enter your name" class="contact-input"><span class="form_error">Please enter your name</span></td>
                              </tr>
                              <tr>
                                <td><label for="email">Email :</label></td>
                                <td class="email"><input name="email" id="email" type="text" placeholder="Please enter your email" class="contact-input"><span class="form_error">Please enter your email</span>
                                  <span class="form_error" id="invalid_email">This email is not valid</span></td>
                              </tr>
                              <tr>
                                <td><label for="phone">Phone :</label></td>
                                <td class="phone"><input name="phone" id="phone" type="text" placeholder="Please enter your phone" class="contact-input"><span class="form_error">Please enter your phone</span></td>
                              </tr>
                              <tr>
                                <td><label for="message">Message :</label></td>
                                <td class="message"><textarea name="message" id="message" class="contact-input"></textarea><span class="form_error">Please enter your message</span></td>
                              </tr>
                              <tr>
                                <td></td>
                                <td>
                                  <input type="submit" class="contactform-buttons" id="submit"value="Send" />
                                  <input type="reset" class="contactform-buttons" id="" value="Clear" />
                                </td>
                              </tr>
                            </table>
     </form>
     <div id="success" style="color:red;"></div>

15

<!-- Dont forget to include the jQuery library here -->
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">

$(document).ready(function() {

    $("#validate").keyup(function(){

        var email = $("#validate").val();

        if(email != 0)
        {
            if(isValidEmailAddress(email))
            {
                $("#validEmail").css({
                    "background-image": "url('validYes.png')"
                });
            } else {
                $("#validEmail").css({
                    "background-image": "url('validNo.png')"
                });
            }
        } else {
            $("#validEmail").css({
                "background-image": "none"
            });         
        }

    });

});

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
}

</script>

<style>
    #validEmail
    {
        margin-top: 4px;
        margin-left: 9px;
        position: absolute;
        width: 16px;
        height: 16px;
    }

    .text
    {
        font-family: Arial, Tahoma, Helvetica;
    }
</style>

    <title>Live Email Validation with jQuery Demo</title>
</head>
<body>
    <div class="text"><h1>Reynoldsftw.com - Live Email Validation</h1><h2>Type in an email address in the box below:</h2></div>
    <div><input type="text" id="validate" width="30"><span id="validEmail"></span></div>
    <div class="text"><P>More script and css style

: www.htmldrive.net


स्रोत: htmldrive.com


14

मैं Verimail.js की सिफारिश करूंगा , इसमें JQuery प्लगइन भी है ।

क्यों? वेरीमेल निम्नलिखित का समर्थन करता है:

  • सिंटैक्स सत्यापन (RFC 822 के अनुसार)
  • इनाणा टीएलडी सत्यापन
  • सबसे सामान्य TLD और ईमेल डोमेन के लिए वर्तनी सुझाव
  • Mailinator.com जैसे अस्थायी ईमेल अकाउंट डोमेन को अस्वीकार करें

इसलिए सत्यापन के अलावा, Verimail.js आपको सुझाव भी देता है। इसलिए यदि आप गलत TLD या डोमेन के साथ एक ईमेल टाइप करते हैं, जो एक सामान्य ईमेल डोमेन (hotmail.com, gmail.com, आदि) से बहुत मिलता-जुलता है, तो यह इसका पता लगा सकता है और सुधार का सुझाव दे सकता है।

उदाहरण:

  • test@gnail.con -> क्या आपका मतलब था @ gmail.com परीक्षण ?
  • test@hey.nwt -> क्या आपका मतलब था परीक्षण @ हे। नेट ?
  • test@hottmail.com -> क्या आपका मतलब टेस्ट @ hotmail.com था ?

और इसी तरह..

JQuery के साथ इसका उपयोग करने के लिए, बस अपनी साइट पर verimail.jquery.js शामिल करें और नीचे दिए गए फ़ंक्शन को चलाएं:

$("input#email-address").verimail({
    messageElement: "p#status-message"
});

संदेश तत्व एक तत्व है जिसमें एक संदेश दिखाया जाएगा। यह "आपका ईमेल अमान्य है" से "क्या आपका मतलब है ..."?

यदि आपके पास एक फ़ॉर्म है और इसे प्रतिबंधित करना चाहते हैं ताकि इसे तब तक प्रस्तुत नहीं किया जा सके जब तक कि ईमेल वैध न हो, तो आप getVerimailStatus-function का उपयोग करके स्थिति की जांच कर सकते हैं जैसा कि नीचे दिखाया गया है:

if($("input#email-address").getVerimailStatus() < 0){
    // Invalid
}else{
    // Valid
}

यह फ़ंक्शन ऑब्जेक्ट Comfirm.AlphaMail.Verimail.Status के अनुसार पूर्णांक स्थिति कोड देता है। लेकिन अंगूठे का सामान्य नियम यह है कि 0 से नीचे का कोई भी कोड त्रुटियों का संकेत देने वाला कोड है।


.getVerimailStatus()संख्यात्मक स्थिति कोड वापस नहीं करता है, बस एक स्ट्रिंग मान success, errorया संभवतः pending(पिछले एक को सत्यापित नहीं किया है)।
निको निमन

14

function isValidEmailAddress(emailAddress) {
    var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\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]))*(([ \t]*\r\n)?[ \t]+)?")@(([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;
    return pattern.test(emailAddress);
};

if( !isValidEmailAddress( emailaddress ) ) { /* do stuff here (email is invalid) */ }

इस उपयोगकर्ता द्वारा प्रदान की गई थी लुका Filosofi इस जवाब में यह उत्तर


यदि आप ASP.NET MVC रेजर पृष्ठ में इसका उपयोग कर रहे हैं, तो @किसी अन्य @वर्ण के साथ वर्ण से बचना न भूलें । जैसे @@, अन्यथा आपको बिल्ड एरर मिलेगा।
रोजी कासिम

11

Html5 सत्यापन का उपयोग करने के लिए एक बहुत ही सरल उपाय है:

<form>
  <input type="email" required pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}">

  <input type="submit">
</form>

http://jsfiddle.net/du676/56/


10

यह अधिक गहन सत्यापन करता है, उदाहरण के लिए यह उपयोगकर्ता के क्रमिक डॉट्स जैसे john..doe @ example.com के खिलाफ जाँच करता है

function isValidEmail(email)
{
    return /^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/.test(email)
        && /^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/.test(email);
}

जावास्क्रिप्ट में नियमित अभिव्यक्ति का उपयोग करके मान्य ईमेल पता देखें ।


1
लेकिन क्या क्रमिक डॉट्स वास्तव में अमान्य हैं? इसके विपरीत मुझे लगता है कि आप ऐसा करके मान्य ईमेल पतों को बाहर कर देंगे।
icktoofay

9

जैसा कि दूसरों ने उल्लेख किया है कि आप यह पता लगाने के लिए कि क्या ईमेल पता एक पैटर्न से मेल खाता है, एक रेगेक्स का उपयोग कर सकता है। लेकिन आपके पास अभी भी ईमेल हो सकते हैं जो पैटर्न से मेल खाते हैं लेकिन मेरा अभी भी उछाल या नकली स्पैम ईमेल हैं।

एक regex के साथ जाँच

var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);

एक वास्तविक ईमेल सत्यापन एपीआई के साथ जाँच

आप एक एपीआई का उपयोग कर सकते हैं जो यह जांच करेगा कि ईमेल पता वास्तविक है और वर्तमान में सक्रिय है।

var emailAddress = "foo@bar.com"
response = $.get("https://isitarealemail.com/api/email/validate?email=" +
    emailAddress,
    function responseHandler(data) {
        if (data.status === 'valid') {
            // the email is valid and the mail box is active
        } else {
            // the email is incorrect or unable to be tested.
        }
    })

अधिक जानकारी के लिए https://isitarealemail.com या ब्लॉग पोस्ट देखें


8

यदि आपके पास मूल रूप है, तो बस इनपुट प्रकार का ईमेल बनाएं: <input type="email" required>

यह उन ब्राउज़र के लिए काम करेगा जो एचटीएमएल 5 विशेषताओं का उपयोग करते हैं और फिर आपको जेएस की भी आवश्यकता नहीं है। ऊपर दी गई कुछ लिपियों के साथ भी केवल ईमेल सत्यापन का उपयोग करने से बहुत कुछ नहीं होगा:

some@email.com so@em.co my@fakemail.net

आदि ... क्या सभी "वास्तविक" ईमेल के रूप में मान्य होंगे। इसलिए आपको यह सुनिश्चित करना बेहतर होगा कि उपयोगकर्ता को यह सुनिश्चित करने के लिए दो बार अपना ईमेल पता दर्ज करना होगा कि वे एक ही डालते हैं; लेकिन यह गारंटी देने के लिए कि ईमेल पता वास्तविक है बहुत मुश्किल है, लेकिन यह देखना दिलचस्प है कि क्या वहाँ था? मार्ग। लेकिन अगर आप यह सुनिश्चित कर रहे हैं कि यह एक ईमेल है, तो HTML5 इनपुट से चिपके रहें।

FIDDLE EXAMPLE

यह फायरफॉक्स और क्रोम में काम करता है। यह इंटरनेट एक्सप्लोरर में काम नहीं कर सकता है ... लेकिन इंटरनेट एक्सप्लोरर बेकार है। तो फिर वहाँ है कि ...


Regexp विधि आमतौर पर @ bc (जो आपके लिंक किए गए JSFiddle उदाहरण नवीनतम क्रोम का उपयोग करने की अनुमति देता है) जैसे स्पष्ट रूप से मूर्खतापूर्ण ईमेल को रोकता है, इसलिए HTML5 समाधान स्पष्ट रूप से एक अपर्याप्त समाधान है।
स्नोइन्फोर्नो

ठंडा। तो कैसे HTML5 जैसे पैटर्न मैच का उपयोग करने के बारे में "माना" है? आप अपने क्रोमबुक में इसे क्यों नहीं आजमाते हैं: jsfiddle.net/du676/8
isaac weathers

8

एमवीसी / ASP.NET में जावास्क्रिप्ट ईमेल सत्यापन

फैबियन के उत्तर का उपयोग करते समय मुझे जो समस्या आई, वह रेजर @प्रतीक के कारण एमवीसी के दृष्टिकोण में इसे लागू कर रही है । आपको @इसे बचने के लिए एक अतिरिक्त प्रतीक शामिल करना होगा, जैसे:@@

MVC में रेजर से बचने के लिए

function isEmail(email) {
  var regex = /^([a-zA-Z0-9_.+-])+\@@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  return regex.test(email);
}

मैंने इसे इस पृष्ठ पर अन्यत्र नहीं देखा, इसलिए मुझे लगा कि यह सहायक हो सकता है।

संपादित करें

यहाँ Microsoft का एक लिंक दिया गया है जो यह बताता है कि यह उपयोग है।
मैंने अभी ऊपर दिए गए कोड का परीक्षण किया और निम्नलिखित js प्राप्त किए:

function validateEmail(email) {
  var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
  return regex.test(email);
}

जो ठीक वही कर रहा है जो उसे करना चाहिए था।


@nbrogi क्या मतलब है कि यह काम नहीं करता है? मैंने इसे फिर से जांचा और यह निम्नलिखित js का उत्पादन करता है। var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; आपके कोड में क्या हो रहा है?
ट्रेवर नेस्टमैन

क्षमा करें, मुझे यकीन नहीं है कि इस समय, मैंने इसे पूरी तरह से बदल दिया है।
nkkollaw

कृपया मुझे बताएं कि आप कब कर सकते हैं। अगर यह बुरी जानकारी है, तो मैं इसे नीचे ले जाऊंगा। मैं जब संभव हो तो उपयोगी जानकारी देने की कोशिश करता हूं और इससे मुझे एमवीसी के दृष्टिकोण में रीजैक्स लिखने में मदद मिली।
ट्रेवर नेस्टमैन

फिर, मैं जानना चाहूंगा कि यह क्यों अस्वीकृत किया गया। यह वास्तव में वही करता है जो मैं चाहता हूं कि यह @प्रतीक को एक रेगीक्स में उत्पन्न करता है .cshtml। आम तौर पर यह @रेजर कोड के रूप में प्रतीक के बाद सब कुछ का इलाज करने की कोशिश करेगा , लेकिन डबल @@उस को रोकता है।
ट्रेवर नेस्टमैन

मुख्य मुद्दा जो मैं देख रहा हूं वह दूसरे कोडब्लॉक में है, आपका regex regex नाम के एक वैरिएबल पर सेट है, लेकिन दूसरी लाइन फिर से नाम के एक वैरिएबल का उपयोग करती है
phlare

7
function isValidEmail(emailText) {
    var pattern = new RegExp(/^((([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);
    return pattern.test(emailText);
};

इस तरह का उपयोग करें:

if( !isValidEmail(myEmail) ) { /* do things if myEmail is valid. */ }

6
function validateEmail(emailaddress){  
   var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;  
   if(!emailReg.test(emailaddress)) {  
        alert("Please enter valid email id");
   }       
}

5
<script type = "text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type = "text/javascript">
    function ValidateEmail(email) {
        var expr = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
        return expr.test(email);
    };
    $("#btnValidate").live("click", function () {
        if (!ValidateEmail($("#txtEmail").val())) {
            alert("Invalid email address.");
        }
        else {
            alert("Valid email address.");
        }
    });
</script>
<input type = "text" id = "txtEmail" />
<input type = "button" id = "btnValidate" value = "Validate" />

4

यहाँ उतरा ..... यहाँ समाप्त हुआ: https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address

... जो निम्नलिखित regex प्रदान करता है:

/^[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])?)*$/

... जो मुझे jQuery मान्यकरण प्लगइन readme पर एक नोट के लिए धन्यवाद मिला: https://github.com/jzaefferer/jquery-validation/blob/master/README.md#reporting-an-issue

तो, @Fabian के उत्तर का अद्यतन संस्करण होगा:

function IsEmail(email) {
  var regex = /^[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])?)*$/;
  return regex.test(email);
}

उम्मीद है की वो मदद करदे


यह मेरे लिए सबसे अच्छा जवाब था - यह सच पर लौटा, john..doe@example.comलेकिन इस तरह से झूठा होना चाहता था
एडम नाइट

3

इसे इस्तेमाल करो

if ($this.hasClass('tb-email')) {
    var email = $this.val();
    var txt = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (!txt.test(email)) {
        e.preventDefault();
        $this.addClass('error');
    } else {
        $this.removeClass('error');
    }
}

3

बग Jquery सत्यापन मान्यकरण प्लगिन में है केवल इसे बदलने के लिए @ के साथ मान्य करता है

इसमें कोड बदलें

email: function( value, element ) {
    // From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29
    // Retrieved 2014-01-14
    // If you have a problem with this implementation, report a bug against the above spec
    // Or use custom methods to implement your own email validation
    return this.optional( element ) || /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test( value );
}

3

थोजो के लिए जो एक बेहतर रख-रखाव का उपयोग करना चाहते हैंविघटनकारी हल्के-लंबे RegEx मैचों की तुलना में समाधान , मैंने कोड की कुछ पंक्तियां लिखीं। Thoose जो बाइट्स बचाना चाहते हैं, RegEx वेरिएंट से चिपके रहते हैं :)

यह प्रतिबंधित करता है:

  • नहीं @ स्ट्रिंग में
  • स्ट्रिंग में कोई डॉट नहीं
  • @ के बाद 2 से अधिक डॉट्स
  • उपयोगकर्ता नाम में खराब चार्ट (@ से पहले)
  • स्ट्रिंग में 2 से अधिक @
  • डोमेन में खराब वर्ण
  • उपडोमेन में खराब चार्ट
  • टीएलडी में खराब चार्ट
  • TLD - पते

वैसे भी, अभी भी इसके माध्यम से लीक करना संभव है, इसलिए सुनिश्चित करें कि आप इसे सर्वर-साइड सत्यापन + ईमेल-लिंक सत्यापन के साथ जोड़ते हैं।

यहाँ JSFiddle है

 //validate email

var emailInput = $("#email").val(),
    emailParts = emailInput.split('@'),
    text = 'Enter a valid e-mail address!';

//at least one @, catches error
if (emailParts[1] == null || emailParts[1] == "" || emailParts[1] == undefined) { 

    yourErrorFunc(text);

} else {

    //split domain, subdomain and tld if existent
    var emailDomainParts = emailParts[1].split('.');

    //at least one . (dot), catches error
    if (emailDomainParts[1] == null || emailDomainParts[1] == "" || emailDomainParts[1] == undefined) { 

        yourErrorFunc(text); 

     } else {

        //more than 2 . (dots) in emailParts[1]
        if (!emailDomainParts[3] == null || !emailDomainParts[3] == "" || !emailDomainParts[3] == undefined) { 

            yourErrorFunc(text); 

        } else {

            //email user
            if (/[^a-z0-9!#$%&'*+-/=?^_`{|}~]/i.test(emailParts[0])) {

               yourErrorFunc(text);

            } else {

                //double @
                if (!emailParts[2] == null || !emailParts[2] == "" || !emailParts[2] == undefined) { 

                        yourErrorFunc(text); 

                } else {

                     //domain
                     if (/[^a-z0-9-]/i.test(emailDomainParts[0])) {

                         yourErrorFunc(text); 

                     } else {

                         //check for subdomain
                         if (emailDomainParts[2] == null || emailDomainParts[2] == "" || emailDomainParts[2] == undefined) { 

                             //TLD
                             if (/[^a-z]/i.test(emailDomainParts[1])) {

                                 yourErrorFunc(text);

                              } else {

                                 yourPassedFunc(); 

                              }

                        } else {

                             //subdomain
                             if (/[^a-z0-9-]/i.test(emailDomainParts[1])) {

                                 yourErrorFunc(text); 

                             } else {

                                  //TLD
                                  if (/[^a-z]/i.test(emailDomainParts[2])) {

                                      yourErrorFunc(text); 

                                  } else {

                                      yourPassedFunc();
}}}}}}}}}

3

आप jQuery सत्यापन का उपयोग कर सकते हैं और, एक एकल HTML लाइन में, आप ईमेल और ईमेल सत्यापन संदेश को मान्य कर सकते हैं:type="email" required data-msg-email="Enter a valid email account!"

आप व्यक्तिगत संदेश रखने के लिए डेटा-एमएसएन-ईमेल पैरामीटर का उपयोग कर सकते हैं या अन्यथा इस पैरामीटर को न रखें और डिफ़ॉल्ट संदेश प्रदर्शित किया जाएगा: "कृपया एक वैध ईमेल पता दर्ज करें।"

पूर्ण उदाहरण:

<form class="cmxform" id="commentForm" method="get" action="">
  <fieldset>
    <p>
      <label for="cemail">E-Mail (required)</label>
      <input id="cemail" type="email" name="email" required data-msg-email="Enter a valid email account!">
    </p>
    <p>
      <input class="submit" type="submit" value="Submit">
    </p>
  </fieldset>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.17.0/dist/jquery.validate.js"></script>
<script>
$("#commentForm").validate();
</script>

2
if($("input#email-address").getVerimailStatus() < 0) { 

(incorrect code)

}

if($("input#email-address").getVerimailStatus() == 'error') { 

(right code)

}

9
क्या आप अपना उत्तर विस्तृत कर सकते हैं ... उदाहरण के लिए आपको उल्लेख करना चाहिए कि getVerimailStatus एक अतिरिक्त प्लगइन है।
डेव होगन

2
checkRegexp( email, /^((([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, "eg. ui@jquery.com" );

रेफ़रेंस: JQUERY UI WEBSITE


2

आपको यह देखना चाहिए: jquery.validate.js , इसे अपनी परियोजना में जोड़ें

इसे इस तरह से उपयोग करना:

<input id='email' name='email' class='required email'/>

2

एक और सरल और पूर्ण विकल्प:

<input type="text" id="Email"/>
<div id="ClasSpan"></div>   
<input id="ValidMail" type="submit"  value="Valid"/>  


function IsEmail(email) {
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return regex.test(email);
}

$("#ValidMail").click(function () {
    $('span', '#ClasSpan').empty().remove();
    if (IsEmail($("#Email").val())) {
        //aqui mi sentencia        
    }
    else {
        $('#ClasSpan').append('<span>Please enter a valid email</span>');
        $('#Email').keypress(function () {
            $('span', '#itemspan').empty().remove();
        });
    }
});

3
स्टैक ओवरफ्लो अंग्रेजी में एक साइट है। कृपया अन्य भाषाओं में सामग्री पोस्ट न करें।
एंडर्स

2

आप अपना खुद का फंक्शन बना सकते हैं

function emailValidate(email){
    var check = "" + email;
    if((check.search('@')>=0)&&(check.search(/\./)>=0))
        if(check.search('@')<check.split('@')[1].search(/\./)+check.search('@')) return true;
        else return false;
    else return false;
}

alert(emailValidate('your.email@yahoo.com'));

1

एक सरलीकृत जो मैंने अभी बनाया है, वही करता है जो मुझे इसकी आवश्यकता है। इसे केवल अल्फ़ान्यूमेरिक, अवधि, अंडरस्कोर और @ तक सीमित कर दिया है।

<input onKeyUp="testEmailChars(this);"><span id="a"></span>
function testEmailChars(el){
    var email = $(el).val();
    if ( /^[a-zA-Z0-9_@.-]+$/.test(email)==true ){
        $("#a").html("valid");
    } else {
        $("#a").html("not valid");
    }
}

दूसरों की मदद से बनाया गया


1

यह regexp डुप्लिकेट डोमेन नाम जैसे abc@abc.com.com.com को रोकता है, यह केवल दो बार abc@abc.co.in जैसे डोमेन की अनुमति देगा। यह 123abc@abc.com जैसे नंबर से स्टेटिंग की भी अनुमति नहीं देता है

 regexp: /^([a-zA-Z])+([a-zA-Z0-9_.+-])+\@(([a-zA-Z])+\.+?(com|co|in|org|net|edu|info|gov|vekomy))\.?(com|co|in|org|net|edu|info|gov)?$/, 

शुभकामनाएं !!!!!


1

टाइप करते समय ईमेल को मान्य करें, बटन स्टेट हैंडलिंग के साथ।

$("#email").on("input", function(){
    var email = $("#email").val();
    var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if (!filter.test(email)) {
      $(".invalid-email:empty").append("Invalid Email Address");
      $("#submit").attr("disabled", true);
    } else {
      $("#submit").attr("disabled", false);
      $(".invalid-email").empty();
    }
  });

1

यदि आप jquery सत्यापन का उपयोग कर रहे हैं

मैंने एक तरीका बनाया है emailCustomFormatजो regexमेरे कस्टर्ड प्रारूप के लिए उपयोग किया जाता है आप इसे अपनी आवश्यकताओं को पूरा करने के लिए बदल सकते हैं

jQuery.validator.addMethod("emailCustomFormat", function (value, element) {
        return this.optional(element) || /^([\w-\.]+@@([\w-]+\.)+[\w-]{2,4})?$/.test(value);
    }, abp.localization.localize("FormValidationMessageEmail"));// localized message based on current language

तो आप इसे इस तरह से उपयोग कर सकते हैं

$("#myform").validate({
  rules: {
    field: {
      required: true,
      emailCustomFormat : true
    }
  }
});

इस रेगेक्स स्वीकार करते हैं

abc@abc.abc, abc@abc.abcd लेकिन यह नहीं

abc@abc, abc@abc.a,abc@abc.abcde

आशा है कि यह आपकी मदद करता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.