2013-02-22 16 views
7
का उपयोग कर

मैं जावास्क्रिप्ट के लिए नया हूँ और इंटरनेट कि दिए गए ईमेल (कोड के साथ कोई समस्या नहीं) की पुष्टि करता है में इस जावा स्क्रिप्ट कोड मिला -समझ ईमेल सत्यापन जावास्क्रिप्ट

<html> 
<h2>Email Validation</h2> 
<script language = "Javascript"> 
function checkEmail(emailId) { 
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailId)){ 
document.write("You have entered valid email."); 
return true; 
}  
return false; 
} 

function ValidateEmail(){ 
    var emailID=document.form.email; 

    if ((emailID.value==null)||(emailID.value=="")){ 
     alert("Please Enter your Email ID") 
     emailID.focus() 
     return false 
    } 

    if (checkEmail(emailID.value)==false){ 
     emailID.value="" 
     alert("Invalid Email Adderess"); 
     emailID.focus() 
     return false 
    } 
     alert('valid'); 
     return true 
} 
</script> 

<form name="form" method="post" onSubmit="return ValidateEmail()">  
Enter an Email Address : <input type="text" name="email" size="30"><br>  
<input type="submit" name="Submit" value="Submit">  
</form> 

</html> 

मैं कोड के साथ कोई मुद्दे हैं, लेकिन मैं किसी भी तरह यह समझने में असफल रहा कि नियमित अभिव्यक्ति /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ का अर्थ क्या है। मैं समझ नहीं पा रहा हूं कि नियमित अभिव्यक्ति का प्रत्येक भाग क्या है। कृपया मुझे ज्ञान दो।

+0

आपको लगता है कि यह भ्रमित है ... इसे आजमाएं: http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html। ईमेल w/a regex को मान्य करना मुश्किल है ... देखें: http://programmers.stackexchange.com/questions/78353/how-far-should-one-take-e-mail-address-validation –

उत्तर

13
  1. दो आगे-स्लैश /.../ में एक रेगेक्स शामिल है।

  2. अग्रणी^और पिछला $ क्रमशः इनपुट स्ट्रिंग की शुरुआत और समापन से मेल खाता है। यही है, इनपुट स्ट्रिंग के एक हिस्से के बजाय, संपूर्ण इनपुट स्ट्रिंग इस रेगेक्स के साथ मिल जाएगी।

  3. \ w + 1 या अधिक शब्द वर्ण (ए-जेड, ए-जेड, 0-9 और अंडरस्कोर) से मेल खाता है।

  4. [.-] मिलान चरित्र। या -। हमें उपयोग करने की ज़रूरत है। प्रतिनिधित्व करना । जैसा । रेगेक्स में विशेष अर्थ है। \ को एस्केप कोड के रूप में जाना जाता है, जो निम्नलिखित वर्ण के मूल शाब्दिक अर्थ को पुनर्स्थापित करता है।

  5. [.-]? [0-] की 0 या 1 घटना से मेल खाता है।

  6. फिर से, \ w + 1 या अधिक शब्द वर्णों से मेल खाता है।

  7. ([.-]? \ W +) * 0 या अधिक घटनाएं [.-]? \ W + से मेल खाते हैं।

  8. उप-अभिव्यक्ति \ w + ([.-]? \ W +) * @ साइन से पहले, ईमेल में उपयोगकर्ता नाम से मेल खाने के लिए उपयोग किया जाता है। यह कम से कम एक शब्द चरित्र (ए-जेड, ए-जेड, 0-9 और अंडरस्कोर) से शुरू होता है, इसके बाद अधिक शब्द वर्ण या। या -। हालांकि, ए। या - एक शब्द चरित्र (ए-जेड, ए-जेड, 0-9 और अंडरस्कोर) द्वारा पालन करना चाहिए। यही है, स्ट्रिंग में "..", "-", ".-" या "-" नहीं हो सकता है। वैध स्ट्रिंग का उदाहरण "a.1-2-3" है।

  9. @ मैचों ही।

  10. फिर से, उप-अभिव्यक्ति \ w + ([.-]? \ W +) * का उपयोग ईमेल डोमेन नाम से मेल खाने के लिए किया जाता है, जैसा ऊपर वर्णित उपयोगकर्ता नाम के समान पैटर्न के साथ होता है।

  11. उप-अभिव्यक्ति। \ W {2,3} एक से मेल खाता है। उसके बाद दो या तीन शब्द वर्ण, उदाहरण के लिए, ".com", ".edu", ".us", ".uk", ".co"।

  12. (। \ W {2,3}) + निर्दिष्ट करता है कि उपर्युक्त उप-अभिव्यक्ति एक या अधिक बार हो जाएगी, उदाहरण के लिए, ".com", ".co.uk", ".edu.sg" आदि।


    /^ => एक पंक्ति

    \w+ => किसी भी शब्द की शुरुआत (:

Reference

+0

8 में यह हिस्सा पूरी तरह से सच नहीं है - "हालांकि, ए। या - एक शब्द चरित्र का पालन करना चाहिए" - क्योंकि आपके पास एक ईमेल पता हो सकता है - जिसके बाद @ - इसके बाद इस शब्द[email protected] – Wojtek

3

एक यहाँ कोशिश REGEX

आप एक विस्तृत विवरण प्राप्त कर सकते हैं दे।

3

यहाँ नियमित अभिव्यक्ति टुकड़ा-दर-टुकड़ा के नीचे एक ब्रेक है अक्षरों, संख्याओं, और अंडरस्कोर) 1 या अधिक बार दोहराया

([\.-]?\w+)* => एक समूहकी [(।) एक वैकल्पिक अवधि या डैश (-) किसी भी शब्द के बाद बार-बार एक या अधिक बार] कि दोहराया जा सकता है 0 या अधिक बार

@\w+ => एक प्रतीक पर (@) का पालन किसी भी शब्द द्वारा बार-बार एक या अधिक बार

([\.-]?\w+)* => एक समूह की [एक वैकल्पिक अवधि या पानी का छींटा पीछा किसी भी शब्द बार-बार 1 या अधिक बार] कि 0 या अधिक दोहराया जा सकता है समय

(\.\w{2,3})+ => एक समूह की [अवधि किसी भी शब्द है कि दोहराया जा सकता है 2-3 बार के बाद] कि दोहराया जा सकता है 1 या अधिक बार

$/ => एक पंक्ति के अंत


वैसे, यहाँ एक वास्तव में अच्छा Introduction to Regular ExpressionsCodular पर उपलब्ध है।

3

प्रयास करें इस

E-mail: <input type="email" name="usremail">

यह मेरे लिए काम किया

1
/^(\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+[,;]?[ ]?)+$/ 

इस छोटे सुंदरता आप, एक स्ट्रिंग में एक या अधिक ईमेल पते दर्ज करने के लिए अल्पविराम या अर्धविराम के साथ समाप्त होने की अनुमति देगा, एक वैकल्पिक स्थान के बाद। :)

0
function validchat(){ 
    $('#btn-input-email').blur(function() { 
     if($(this).val() != '') { 
      var pattern = /^([a-z0-9_\.-])[email protected][a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i; 
      if(pattern.test($(this).val())){ 
       $(this).css({'border' : '1px solid #569b44'}); 
       $('#valid').text(''); 
      } else { 
       $(this).css({'border' : '1px solid #ff0000'}); 
       $('#valid').text('Не верно'); 
      } 
     } else { 
      $(this).css({'border' : '1px solid #ff0000'}); 
      $('#valid').text('Поле email не должно быть пустым'); 
     } 
    }); 
    $("#btn-input-text").blur(function() { 
     var textlength = $(this).val().trim().length; 
     if(textlength < 2){ 
      $(this).css({'border' : '1px solid #ff0000'}); 
      $('#validtext').text('Минимум 2 символ'); 
     }else{ 
      $(this).css({'border' : '1px solid #569b44'}); 
      $('#validtext').text(''); 
     } 
    }); 
    var valid = $('#valid').text(); 
    var validtext = $('#validtext').text(); 
    if((!valid || valid == '') && (!validtext || validtext == '')){ 
     return true; 
    } 
} 
validchat(); 
function AjaxChat() { 
    $('#btn-input-email , #btn-input-text').blur(); 
    var valid = validchat(); 
    if(valid){ 
     var email = $('#btn-input-email').val(); 
     var text = $('#btn-input-text').val(); 

     var data = { 
      email:email, 
      text:text 
     } 

     $.ajax({ 
      url: location.origin+"/chat_block.php", 
      //dataType: "json", ////Тип данных 
      type: "POST", 
      async: false, 
      data: data, 
      success: function(html) { 
       if(!html || html == 'null') AjaxChat(); 
       if (jQuery.html != "") { 
        var b_chat = $('.chat-customer').html(); 
        var chat = 'Вы: '; 
        var obj = $.parseJSON(html); 
        chat += '<span>'; 
        chat += obj['text']; 
        chat += '</span>'; 
        chat += '<br /><br />'; 
        $('.chat-customer').html(b_chat + chat); 
        $('#btn-input-text , #btn-input-email').val(""); 
       } 
      }, 
      error: function() { 
       //cosole.log('No result'); 
      } 
     }); 
     $('#btn-input-email').remove(); 
    } 
} 
0

यह सत्यापन कोड ईमेल पते के लिए गलत है। विशेष रूप से पहले[email protected] फ़ॉर्म के पते की अनुमति नहीं है। यह कई वाणिज्यिक वेबसाइटों पर व्यापक त्रुटि मिली है (लेकिन स्टैक ओवरफ्लो नहीं - बधाई हो!)।

संबंधित मुद्दे