পাসওয়ার্ড বৈধতার জন্য রেজিপ্লেক্স জাভা


109

জাভা অ্যাপ্লিকেশনটিতে একটি কনফিগারেশন প্যারামিটার হিসাবে ব্যবহার করার জন্য আমি পাসওয়ার্ড বৈধতার জন্য একটি রেজিপ্যাক্স তৈরি করছি।

রিজ এক্সপ্সটি হ'ল:

^.*(?=.{8,})(?=..*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$

পাসওয়ার্ড নীতিটি হ'ল:

  • কমপক্ষে 8 টি চর

  • কমপক্ষে একটি অঙ্ক রয়েছে

  • কমপক্ষে একটি নিম্ন আলফা চর এবং একটি উপরের আলফা চর থাকে

  • বিশেষ অক্ষরের সেট ( @#%$^ইত্যাদি) এর মধ্যে কমপক্ষে একটি চর থাকে

  • স্থান, ট্যাব, ইত্যাদি ধারণ করে না

আমি ঠিক পয়েন্ট 5 অনুপস্থিত, আমি স্থান, ট্যাব, ক্যারেজ রিটার্ন ইত্যাদির জন্য রেজিপ এক্স চেক করতে পারছি না

কেউ আমাকে সাহায্য করতে পারে?


3
পাসওয়ার্ডের নিয়মগুলি খারাপ। আরও তথ্যের জন্য দয়া করে রেফারেন্স - পাসওয়ার্ড বৈধতা দেখুন।
ctwheels

উত্তর:


317

এটা চেষ্টা কর:

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\S+$).{8,}$

ব্যাখ্যা:

^                 # start-of-string
(?=.*[0-9])       # a digit must occur at least once
(?=.*[a-z])       # a lower case letter must occur at least once
(?=.*[A-Z])       # an upper case letter must occur at least once
(?=.*[@#$%^&+=])  # a special character must occur at least once
(?=\S+$)          # no whitespace allowed in the entire string
.{8,}             # anything, at least eight places though
$                 # end-of-string

প্রতিটি নিয়ম একটি স্বতন্ত্র "মডিউল" হওয়ায় পৃথক নিয়ম যুক্ত করা, সংশোধন করা বা অপসারণ করা সহজ।

(?=.*[xyz])কনস্ট্রাক্ট সমগ্র স্ট্রিং (eats .*) এবং প্রথম সংঘটন যেখানে backtracks [xyz]মেলাতে পারে। এটি [xyz]পাওয়া গেলে সফল হয়, অন্যথায় এটি ব্যর্থ হয়।

বিকল্প একটি অনিচ্ছুক কোয়ালিফায়ার ব্যবহার করা হবে: (?=.*?[xyz])। পাসওয়ার্ড পরীক্ষার জন্য, এটি খুব কমই কোনও পার্থক্য তৈরি করবে, দীর্ঘতর স্ট্রিংগুলির জন্য এটি আরও কার্যকর বৈকল্পিক হতে পারে।

অবশ্যই সবচেয়ে কার্যকর বৈকল্পিক (তবে পড়তে এবং বজায় রাখা সবচেয়ে শক্ত, সুতরাং সবচেয়ে ত্রুটি-প্রবণ) (?=[^xyz]*[xyz])অবশ্যই হবে। এই দৈর্ঘ্যের পুনঃসংশ্লিষ্ট এবং এই উদ্দেশ্যে, আমি সেভাবে এটি করার পরামর্শ দিতে চাই না কারণ এর কোনও আসল সুবিধা নেই।


15
@ কেরবি 82২: জাভা স্ট্রিংগুলিতে, ব্যাকস্ল্যাশগুলি অবশ্যই পালাতে হবে। ব্যবহার করার চেষ্টা করুন \\s। এটি একটি জাভা প্রয়োজনীয়তা, রেজেক্সের প্রয়োজনীয়তা নয়।
তোমালাক

1
@ অ্যালভ এইভাবে এটি সম্পর্কে চিন্তা করুন: প্রয়োগ করা হয়নি এমন সমস্ত কিছুই alচ্ছিক। আপনি যে জিনিসগুলি প্রয়োগ করতে চান না তার জন্য কেবল চেকগুলি সরিয়ে দিন। সমাধানটি আপনার প্রয়োজনের সাথে খাপ খাইয়ে নেওয়া সহজ হওয়া উচিত।
তোমালাক

3
এই উত্তরটি "সাধারণ বৈধকরণ কার্যসমূহ" এর অধীনে স্ট্যাক ওভারফ্লো নিয়মিত এক্সপ্রেশন FAQ এ যুক্ত করা হয়েছে ।
aliteralmind

1
@ shA.t এটি একই জিনিস। আমি কেবল (?=...)প্যাটার্নটি ধরে রাখার চেষ্টা করেছি যাতে এটি বাকী এক্সপ্রেশনটির সেটআপের সাথে মেলে ..
তোমালক

2
@ shA.t আপনি যদি বলেন "কেবলমাত্র ফাঁকা অক্ষর রয়েছে" ( (?=\S+$)) অথবা "স্পেস অক্ষর নেই" ( (?!.*\s)) তবে এটি পছন্দ করার বিষয়। আপনার যা ভাল লাগে তা ব্যবহার করুন। :)
তোমালাক

55

regex ব্যবহার করে সাধারণ উদাহরণ

public class passwordvalidation {
    public static void main(String[] args) {
      String passwd = "aaZZa44@"; 
      String pattern = "(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}";
      System.out.println(passwd.matches(pattern));
   }
}

ব্যাখ্যা:

  • (?=.*[0-9]) একটি অঙ্ক কমপক্ষে একবার ঘটতে হবে
  • (?=.*[a-z]) একটি ছোট মামলার চিঠিটি অবশ্যই কমপক্ষে একবার আসবে
  • (?=.*[A-Z]) একটি বড় হাতের অক্ষর অবশ্যই কমপক্ষে একবার আসবে
  • (?=.*[@#$%^&+=]) একটি বিশেষ চরিত্র অন্তত একবার ঘটতে হবে
  • (?=\\S+$) পুরো স্ট্রিংয়ে কোনও সাদা স্থানের অনুমতি নেই
  • .{8,} কমপক্ষে 8 টি অক্ষর

5
{5,10} সর্বনিম্ন 5 টি অক্ষর এবং সর্বোচ্চ 10 টি অক্ষর উপস্থাপন করে। সেক্ষেত্রে যে কেউ নির্দিষ্ট ব্যাখ্যা খুঁজছেন।
অভয়

@ আইবি, আমি এটি খুঁজছিলাম ধন্যবাদ.
অক্ষত শ্রীনিবাস

সুরক্ষার কারণে আমি স্ট্রিংয়ের পরিবর্তে চর অ্যারেতে থাকা পাসওয়ার্ডে রেজেক্স প্রয়োগ করার চেষ্টা করছি। তবে একজন কীভাবে একটি চর অ্যারেতে রেজেক্স প্রয়োগ করতে পারে?
এজেন্টএম

13

পূর্বের প্রদত্ত সমস্ত উত্তর প্রতিটি প্রয়োজনীয়তার জন্য পৃথক বর্ণবাদীর জন্য একই (সঠিক) কৌশল ব্যবহার করে। তবে এগুলিতে বেশিরভাগ অদক্ষতা এবং একটি সম্ভাব্য বিশাল বাগ রয়েছে যা পিছনের প্রান্তে নির্ভর করে যা আসলে পাসওয়ার্ডটি ব্যবহার করবে।

আমি স্বীকৃত উত্তর থেকে রেজেক্স দিয়ে শুরু করব:

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\S+$).{8,}$

সবার আগে, যেহেতু জাভা সমর্থন করে \Aএবং \zআমি পুরো স্ট্রিংটি স্বতন্ত্রভাবে বৈধ হয়ে গেছে তা নিশ্চিত করার জন্য সেগুলি ব্যবহার করতে পছন্দ করি Pattern.MULTILINE। এটি পারফরম্যান্সকে প্রভাবিত করে না, তবে রেজিক্সগুলি পুনর্ব্যবহার করা হলে ভুলগুলি এড়ায়।

\A(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\S+$).{8,}\z

পাসওয়ার্ডটিতে সাদা স্থান নেই এবং এটির ন্যূনতম দৈর্ঘ্য যাচাই করা সম্ভব নয় এমন অক্ষরগুলিকে সীমিত করে {8,}শর্টহ্যান্ডে ভেরিয়েবল কোয়ান্টিফায়ার রেখে একবারে একটি পাসে করা যেতে পারে \S:

\A(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])\S{8,}\z

যদি প্রদত্ত পাসওয়ার্ডে কোনও স্থান থাকে তবে সমস্ত চেক করা হবে, কেবলমাত্র স্থানটিতে চূড়ান্ত চেকটি ব্যর্থ হওয়ার জন্য। এটি দিয়ে সমস্ত বিন্দু প্রতিস্থাপন করে এড়ানো যায় \S:

\A(?=\S*[0-9])(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[@#$%^&+=])\S{8,}\z

আপনি যদি সত্যই কোনও চরিত্রের অনুমতি দিতে চান তবে কেবল বিন্দুটি ব্যবহার করা উচিত। অন্যথায়, আপনার রেজেক্সকে কেবলমাত্র সেই চরিত্রগুলিতে সীমাবদ্ধ করতে একটি (অবহেলিত) অক্ষর শ্রেণি ব্যবহার করুন যা সত্যই অনুমোদিত। যদিও এই ক্ষেত্রে এতে সামান্যতম পার্থক্য রয়েছে, অন্য কোনও কিছুর জন্য উপযুক্ত যখন বিন্দু ব্যবহার না করা খুব ভাল অভ্যাস। আমি বিপর্যয়কর ব্যাকট্র্যাকিংয়ের অনেকগুলি বিষয় দেখতে পাচ্ছি কারণ বিকাশকারী বিন্দুর চেয়ে আরও উপযুক্ত কিছু ব্যবহার করতে খুব অলস ছিলেন।

যেহেতু খুব ভাল সম্ভাবনা রয়েছে প্রাথমিক পরীক্ষাগুলি পাসওয়ার্ডের প্রথমার্ধে একটি উপযুক্ত চরিত্রের সন্ধান করবে, তাই একটি অলস কোয়ান্টিফায়ার আরও দক্ষ হতে পারে:

\A(?=\S*?[0-9])(?=\S*?[a-z])(?=\S*?[A-Z])(?=\S*?[@#$%^&+=])\S{8,}\z

তবে এখন সত্যিকারের গুরুত্বপূর্ণ ইস্যুটির জন্য: উত্তরের কোনওটির মধ্যেই আসল প্রশ্নটি ASCII তে ভাবেন এমন কেউ লিখেছেন বলে মনে হয় না। তবে জাভা স্ট্রিংগুলিতে ইউনিকোড রয়েছে। পাসওয়ার্ডগুলিতে অ-এএসসিআইআই অক্ষর অনুমোদিত? যদি সেগুলি হয় তবে কেবলমাত্র ASCII স্পেসগুলিই অনুমোদিত নয়, বা সমস্ত ইউনিকোড সাদা স্থান বাদ দেওয়া উচিত।

ডিফল্টরূপে \sকেবল এএসসিআইআই শ্বেতস্পেসের সাথে মেলে, তাই এর বিপরীতটি \Sসমস্ত ইউনিকোড অক্ষর (সাদা স্থান বা না) এবং সমস্ত নন-হোয়াইটস্পেস এএসসিআইআই অক্ষরের সাথে মেলে। যদি ইউনিকোড অক্ষর অনুমোদিত হয় তবে ইউনিকোড ফাঁকা স্থান না থাকলে, ইউনিকোড সাদা স্থান বাদ দিতে UNICODE_CHARACTER_CLASSপতাকাটি নির্দিষ্ট করা যেতে পারে \S। যদি ইউনিকোড অক্ষরগুলিকে অনুমতি না দেওয়া হয়, তবে স্থান বা নিয়ন্ত্রণের অক্ষর নয় এমন সমস্ত ASCII টি অক্ষর মিলানোর [\x21-\x7E]পরিবর্তে ব্যবহার করা যেতে পারে \S

যা আমাদের পরবর্তী সম্ভাব্য ইস্যুতে নিয়ে আসে: আমরা কি নিয়ন্ত্রণের অক্ষরগুলিকে অনুমতি দিতে চাই? একটি সঠিক রেজেক্স লেখার প্রথম পদক্ষেপটি হ'ল আপনি কী মিল করতে চান এবং কোনটি নয় তা হুবহু নির্দিষ্ট করে দেওয়া। কেবলমাত্র 100% প্রযুক্তিগতভাবে সঠিক উত্তরটি হ'ল প্রশ্নের পাসওয়ার্ডের স্পেসিফিকেশন অস্পষ্ট কারণ এটি নির্দিষ্ট করে না যে নিয়ন্ত্রণের অক্ষর বা অ-এএসসিআইআই অক্ষরের মতো নির্দিষ্ট বর্ণের অনুমতি দেওয়া আছে কি না।


9

আপনার অত্যধিক জটিল রেজেেক্স ব্যবহার করা উচিত নয় (যদি আপনি এগুলি এড়াতে পারেন) কারণ তারা

  • পড়া কঠিন (অন্তত সবার জন্য তবে নিজের জন্য)
  • প্রসারিত করা কঠিন
  • ডিবাগ করা শক্ত

যদিও অনেকগুলি ছোট নিয়মিত এক্সপ্রেশন ব্যবহার করে একটি ছোট পারফরম্যান্স ওভারহেড হতে পারে তবে উপরের পয়েন্টগুলি এটি সহজেই ওজনের করে।

আমি এর মতো বাস্তবায়ন করব:

bool matchesPolicy(pwd) {
    if (pwd.length < 8) return false;
    if (not pwd =~ /[0-9]/) return false;
    if (not pwd =~ /[a-z]/) return false;
    if (not pwd =~ /[A-Z]/) return false;
    if (not pwd =~ /[%@$^]/) return false;
    if (pwd =~ /\s/) return false;
    return true;
}

এবং সুরক্ষার দৃষ্টিকোণ থেকে লম্বা পাসওয়ার্ড জোর করা, পাসওয়ার্ডগুলিকে অতি জটিল এবং মনে রাখা শক্ত না হয়ে প্রচ্ছন্ন পাসওয়ার্ডগুলি (যেমন 12345 এবং পাস = ব্যবহারকারীর) প্রতিরোধ করা আরও ভাল।
মার্টিন রাউচার 21

আমি উপরে আপনার পদ্ধতির পছন্দ। এটার জন্য ধন্যবাদ!
টমাস ল্যাং

1

পাসওয়ার্ডের প্রয়োজনীয়তা:

  • পাসওয়ার্ডটি কমপক্ষে আট (8) টি অক্ষরের দৈর্ঘ্য হওয়া উচিত যেখানে সিস্টেম এটি সমর্থন করতে পারে।
  • পাসওয়ার্ডগুলিতে এই গ্রুপিংয়ের কমপক্ষে দুটি (2) টির মধ্যে অক্ষর অন্তর্ভুক্ত থাকতে হবে: আলফা, সংখ্যাসূচক এবং বিশেষ অক্ষর।

    ^.*(?=.{8,})(?=.*\d)(?=.*[a-zA-Z])|(?=.{8,})(?=.*\d)(?=.*[!@#$%^&])|(?=.{8,})(?=.*[a-zA-Z])(?=.*[!@#$%^&]).*$

আমি এটি পরীক্ষা করেছি এবং এটি কাজ করে


1

প্রতিটি ধরণের চরিত্রের জন্য ন্যূনতম প্রয়োজনীয়তায় আগ্রহী যে কেউ, আমি তোমালকের গৃহীত উত্তরের চেয়ে নিম্নলিখিত এক্সটেনশনটি করার পরামর্শ দিচ্ছি:

^(?=(.*[0-9]){%d,})(?=(.*[a-z]){%d,})(?=(.*[A-Z]){%d,})(?=(.*[^0-9a-zA-Z]){%d,})(?=\S+$).{%d,}$

লক্ষ্য করুন যে এটি একটি ফর্ম্যাটিং স্ট্রিং এবং চূড়ান্ত রেজেক্স প্যাটার্ন নয়। কেবলমাত্র% d এর জন্য সর্বনিম্ন প্রয়োজনীয় সংখ্যার সাথে প্রতিস্থাপন করুন: অঙ্ক, ছোট হাতের অক্ষর, বড় হাতের অক্ষর, অ-সংখ্যা / অক্ষর এবং পুরো পাসওয়ার্ড (যথাক্রমে)। সর্বাধিক ঘটনাগুলি অসম্ভাব্য (আপনি যদি সর্বোচ্চ 0 টি চান না তবে কার্যকরভাবে এই জাতীয় কোনও অক্ষর প্রত্যাখ্যান করা) তবে সেগুলি সহজেই যুক্ত করা যেতে পারে। প্রতিটি ধরণের চারপাশে অতিরিক্ত গোষ্ঠীকরণের বিষয়টি লক্ষ্য করুন যাতে ন্যূনতম / সর্বোচ্চ সীমাবদ্ধতা অবিচ্ছিন্ন ম্যাচের জন্য অনুমতি দেয় allow এটি এমন একটি সিস্টেমের জন্য বিস্ময়ের কাজ করেছে যেখানে আমরা প্রতিটি ধরণের চরিত্রের প্রয়োজনের জন্য কেন্দ্রীয়ভাবে কনফিগার করতে পারি এবং তারপরে ওয়েবসাইটের পাশাপাশি দুটি পৃথক মোবাইল প্ল্যাটফর্ম উপরের ফর্ম্যাটিং স্ট্রিংয়ের উপর ভিত্তি করে রেজেক্স প্যাটার্নটি তৈরি করতে সেই তথ্য নিয়ে আসে।


1

এটি প্রতিটি বিশেষ চরিত্রের জন্য পরীক্ষা করে:

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=\S+$).*[A-Za-z0-9].{8,}$

1

প্যারামিটার সহ জাভা পদ্ধতিটি আপনার জন্য প্রস্তুত

কেবল অনুলিপি করুন এবং আটকান এবং আপনার পছন্দসই পরামিতি সেট করুন।

আপনি যদি কোনও মডিউল না চান তবে কেবল এটির মন্তব্য করুন বা বিশেষ চরের জন্য আমার দ্বারা করা একটি "যদি" যুক্ত করুন

//______________________________________________________________________________
/**
 * Validation Password     */
//______________________________________________________________________________
private static boolean validation_Password(final String PASSWORD_Arg)    {
    boolean result = false;
    try {
        if (PASSWORD_Arg!=null) {
            //_________________________
            //Parameteres
            final String MIN_LENGHT="8";
            final String MAX_LENGHT="20";
            final boolean SPECIAL_CHAR_NEEDED=true;

            //_________________________
            //Modules
            final String ONE_DIGIT = "(?=.*[0-9])";  //(?=.*[0-9]) a digit must occur at least once
            final String LOWER_CASE = "(?=.*[a-z])";  //(?=.*[a-z]) a lower case letter must occur at least once
            final String UPPER_CASE = "(?=.*[A-Z])";  //(?=.*[A-Z]) an upper case letter must occur at least once
            final String NO_SPACE = "(?=\\S+$)";  //(?=\\S+$) no whitespace allowed in the entire string
            //final String MIN_CHAR = ".{" + MIN_LENGHT + ",}";  //.{8,} at least 8 characters
            final String MIN_MAX_CHAR = ".{" + MIN_LENGHT + "," + MAX_LENGHT + "}";  //.{5,10} represents minimum of 5 characters and maximum of 10 characters

            final String SPECIAL_CHAR;
            if (SPECIAL_CHAR_NEEDED==true) SPECIAL_CHAR= "(?=.*[@#$%^&+=])"; //(?=.*[@#$%^&+=]) a special character must occur at least once
            else SPECIAL_CHAR="";
            //_________________________
            //Pattern
            //String pattern = "(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}";
            final String PATTERN = ONE_DIGIT + LOWER_CASE + UPPER_CASE + SPECIAL_CHAR + NO_SPACE + MIN_MAX_CHAR;
            //_________________________
            result = PASSWORD_Arg.matches(PATTERN);
            //_________________________
        }    

    } catch (Exception ex) {
        result=false;
    }

    return result;
}        



0

সহজ এক

("^ (? =। * [0-9]) (? =। * [আজ]] (? =। * [জেড]]) (? =। * [\\ ডাব্লু _]) [\\ এস] {8 10} $ ")

  1. (? = কিছুর) -> এর অর্থ সমস্ত ইনপুট স্ট্রিংয়ে ইতিবাচক চেহারা এবং এই শর্তটি লিখিত আছে কিনা তা নিশ্চিত করুন ample যদি লেখা রিটার্ন মিথ্যা

  2. (?! কিছু) -> (ভীসা বিপরীতভাবে) নেতিবাচক রূপ এগিয়ে যদি শর্ত হয় মানে লিখিত রিটার্ন মিথ্যা

    ঘনিষ্ঠ অর্থ ^ (শর্ত) (শর্ত) (শর্ত) (শর্ত) [\ এস] {8,10} $


কোড কেবল উত্তরগুলি সমস্যার সমাধান দিতে পারে তবে কিছু ব্যাখ্যা উত্তরের গুণগত মান বাড়িয়ে তুলবে।
নাইজেল রেন 16

0
String s=pwd;
int n=0;
for(int i=0;i<s.length();i++)
{
    if((Character.isDigit(s.charAt(i))))
    {
        n=5;
        break;
    }
    else
    {

    }
}
for(int i=0;i<s.length();i++)
{
    if((Character.isLetter(s.charAt(i))))
    {
        n+=5;
        break;
    }
    else
    {

    }

}

if(n==10)
{
    out.print("Password format correct <b>Accepted</b><br>");

}
else
{
    out.print("Password must be alphanumeric <b>Declined</b><br>");
}

ব্যাখ্যা:

  1. প্রথমে পাসওয়ার্ডটি স্ট্রিং হিসাবে সেট করুন এবং পূর্ণসংখ্যা সেট তৈরি করুন।
  2. তারপরে প্রতিটি চরকে লুপের জন্য পরীক্ষা করে দেখুন।
  3. যদি স্ট্রিংটিতে এটি সংখ্যাটি খুঁজে পায় তবে এন যোগ করুন 5 তারপরে লুপের জন্য পরবর্তীটিতে যান। Character.isDigit (s.charAt (ঝ))
  4. এই লুপটি স্ট্রিংয়ে রাখা কোনও বর্ণমালা পরীক্ষা করে। যদি এটির সন্ধান হয় তবে আরও একটি আরও 5 যুক্ত করুন। Character.isLetter (s.charAt (ঝ))
  5. এখন শর্তের মাধ্যমে পূর্ণসংখ্যা এন পরীক্ষা করুন। যদি এন = 10 টি সত্য হয় তবে স্ট্রিংটি আলফানিউমেরিক হয় অন্যথায় নয়।

0

এছাড়াও আপনি এই মত করতে পারেন।

 public boolean isPasswordValid(String password) {


    String regExpn =
            "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}$";

    CharSequence inputStr = password;

    Pattern pattern = Pattern.compile(regExpn,Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(inputStr);

    if(matcher.matches())
        return true;
    else
        return false;
}

0

শক্তিশালী পাসওয়ার্ডের জন্য নমুনা কোড ব্লক:

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?=\\S+$).{6,18}
  1. কমপক্ষে 6 ডিজিট
  2. 18 অঙ্ক পর্যন্ত
  3. এক নাম্বার
  4. একটি ছোট হাতের
  5. এক বড় হাতের
  6. সমস্ত বিশেষ অক্ষর থাকতে পারে

0

RegEx হ'ল -

^(?:(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*)[^\s]{8,}$
  1. কমপক্ষে 8 টি সংখ্যা {8,
  2. কমপক্ষে একটি সংখ্যা (? =। * \ d)
  3. কমপক্ষে একটি ছোট হাতের (? =। * [আজ])
  4. কমপক্ষে একটি বড় হাতের (? =। * [জেড]]
  5. কমপক্ষে একটি বিশেষ অক্ষর (? =। * [@ # $% ^ & + =])
  6. কোনও স্থান নেই [^ \ s]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.