5
^(?=[\w\-%&?#=]+\d)(?=[\w\-%&?#=]+[a-zA-Z])[\w\-%&?#=]{8,12}$ 

एक जावास्क्रिप्ट आधारित नए पासवर्ड की जांच में नीचे की स्थिति मैच के लिए,जावास्क्रिप्ट RegExp अनुकूलता

  • अनिवार्य रूप से एक पत्र और नंबर
  • सहित कम से कम 8 से 20 अक्षर, शामिल नहीं होने चाहिए चाहिए था ? केवल निम्नलिखित विशेष पात्रों में से एक में शामिल हैं:%, &, _,, #, =, -
  • कोई खाली स्थान नहीं हो सकता

उपरोक्त regex के साथ, goog123# एफएफ 3.5 में मेल खाता था। हालांकि यह आईई 6 में विफल रहता है। किसी को पता है कि यहाँ क्या गलत हुआ? क्या यह एक संगतता मुद्दा है?

जावास्क्रिप्ट मिलान

function fnIsPassword(strInput) 
{ 
    alert("strInput : " + strInput); 
    var regExp =/^(?=.{0,19}\d)(?=.{0,19}[a-zA-Z])[\w%&?#=-]{8,20}$/; 
    if(strInput.length > 0){ 
    return (regExp.test(strInput)); 
    } 
    return false; 
} 
alert(fnIsPassword("1231231")); //false 
alert(fnIsPassword("sdfa4gggggg")); //FF: true, false in IE 
alert(fnIsPassword("goog1234#")); //FF: true , false in IE 
+12

कुछ IE6 पर विफल रहता है कुछ भी गलत नहीं है,। –

+0

@ रूबेन्स काफी संभवतः सबसे मजेदार और सटीक कथन मैंने सुना है कि – Chris

उत्तर

1

यह मुझे कुछ sifting के साथ क्या मिला है बजाय इस एक कोशिश करें।

  1. घटनाओं के लिए निचली गिनती को ढूंढते समय, गिनती पहली लुकहेड मैच के अंत से शुरू होती है। हालांकि, अंतिम मैच केवल स्ट्रिंग की शुरुआत से ही किए जाएंगे।
  2. ऊपरी गिनती के लिए, व्यवहार की अपेक्षा की जाती है।

इस समस्या के लिए अंतिम regex

/(?=^[\w%&?#=-]{8,12}$)(?=.+\d)(?=.+[a-zA-Z]).+/ 
4

regex मुद्दों की एक संख्या है परीक्षण करने के लिए इस्तेमाल किया।

 
^(?=.{,19}\d)(?=.{,19}[a-zA-Z])[\w%&?#=-]{8,20}$ 

है जो:

 
^     # start-of-string 
(?=.{,19}\d)   # look-ahead: a digit within 20 chars 
(?=.{,19}[a-zA-Z]) # look-ahead: a letter within 20 chars 
[\w%&?#=-]{8,20}  # 8 to 20 chars of your allowed range 
$     # end-of-string 
+0

त्वरित सहायता के लिए धन्यवाद। हालांकि, समस्या अभी भी बनी हुई है। जैसा कि मैंने पहले निर्दिष्ट किया था, मिलान करने के लिए जावास्क्रिप्ट में regExp का उपयोग कर रहा हूं। मेरी टेस्ट स्क्रिप्ट को यहां पोस्ट करना फ़ंक्शन fnIsPassword (strInput) { अलर्ट ("strInput:" + strInput); var regExp =/^ (? =। {0,19} \ d) (? =। {0,19} [ए-जेए-जेड]) [\ w% और? # = -] {8,20} $ /; यदि (strInput.length> 0) { वापसी (regExp.test (strInput)); } झूठी वापसी; } अलर्ट (fnIsPassword ("1231231")); // झूठी चेतावनी (fnIsPassword ("sdfa4gggggg")); // एफएफ: सच, आईई 6 अलर्ट में गलत (एफएनआईएस पासवर्ड ("goog1234 #")); // एफएफ: सच, आईई 6 और हां, आईई 6 में दर्द है। स्वरूपण के लिए – mays

+0

क्षमा करें। जैसा कि आपने अनुमान लगाया होगा, मैं यहां चारों ओर नया हूं। – mays

+0

मैंने विंडोज एक्सपी पर जेस्क्रिप्ट में अपनी टेस्ट स्क्रिप्ट की कोशिश की (आईई 6 जेस्क्रिप्ट 5.6 का उपयोग करता है) और यह दो अन्य परीक्षणों के लिए पहले और -1 (= सत्य) के लिए सही ढंग से 0 (= गलत) देता है। क्या आप इसे .js फ़ाइल में सहेज सकते हैं और अपने आप कोशिश कर सकते हैं? – Tomalak

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