/ / इस नियमित अभिव्यक्ति के लिए कम से कम 1 पूंजी पत्र की आवश्यकता नहीं है - जावास्क्रिप्ट, regex

इस नियमित अभिव्यक्ति की आवश्यकता नहीं है कम से कम 1 पूंजी अक्षर - जावास्क्रिप्ट, regex की आवश्यकता नहीं है

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

/^(?:(?!([a-zA-Z0-9-().&@?""#,+""s/])11)[a-zA-Z0-9-().&@?""#,+""s/]){7,}$/

उत्तर:

उत्तर № 1 के लिए 4

पहले से ही नियमित अभिव्यक्ति की आवश्यकता नहीं हैएक ऊपरी मामला चरित्र। केवल "दिलचस्प" चीजें जो इस पर जोर देती हैं कि स्ट्रिंग 3 बार (एक ही चरित्र) एक ही चीज के साथ शुरू नहीं हो सकती है, और समग्र स्ट्रिंग को कम से कम सात वर्ण लंबा होना चाहिए।

इसके अलावा regex में एकल और दोहरे-भाव वर्णों का दोहरीकरण आवश्यक नहीं है।


जवाब के लिए 3 № 2

उस regex में कुछ भी नहीं है जिसे अपरकेस अक्षरों की आवश्यकता है। उस रेगेक्स द्वारा लगाई गई आवश्यकताएं हैं:

  • कम से कम 7 अक्षर लंबे।
  • केवल अपरकेस और लोअरकेस अक्षर, अंक 0-9, प्रतीक शामिल हैं -().&@?"#,+", व्हॉट्सएप, या /.
  • एक ही वर्ण के 3 से शुरू नहीं होता है। (लेखक ने संभवतः इस जाँच को पूरे पासवर्ड पर लागू करने का इरादा किया था, लेकिन ऐसा नहीं है।)

यदि मैं गलत नहीं हूँ, तो यह पासवर्ड सत्यापन के लिए उपयोग किया जाता है। यह कई कारणों से regexes का खराब उपयोग है।

  1. यह पढ़ने के लिए कठिन है। क्या रेगेक्स की जांच करता है, वास्तव में? क्या है कि पात्रों का बड़ा गड़बड़ वास्तव में करता है? यदि आप "रेगेक्स विशेषज्ञ नहीं हैं तो यह अस्पष्ट है।"

  2. यह कई आवश्यकताओं को एक बड़े regex में crammed है। यह आसान हो सकता है पढ़ने और अधिक बनाए रखने के लिए अगर जाँच कोड की कई लाइनों में विभाजित थे:

    if (password.length < 7)                  reject("Too short.");
    if (numRepeatedCharacters(password) >= 3) reject("Too repetitive.");
    if (numDigits(password) < 1)              reject("Digit required.");
    if (numSymbols(password) < 1)             reject("Symbol required.");
    // etc.
    
  3. यह एक के बजाय एक चरित्र श्वेत सूची में शामिल हैकाली सूची। कृपया "टी वाइटेलिस्ट कैरेक्टर न करें।" ऐसा कोई कारण नहीं है कि उपयोगकर्ताओं को आपके द्वारा उपयोग किए जा रहे पात्रों को रोकने का कोई कारण नहीं है। यदि वे किसी तारांकन चिह्न, प्रतिशत चिह्न, उच्चारण अक्षरों आदि का उपयोग करना चाहते हैं, तो आप उन वर्णों को अस्वीकार कर देंगे? अच्छा सुरक्षा कारण।