স্ট্রিংয়ে কমপক্ষে একটি লোয়ার কেস চর, বড় হাতের অক্ষর, অঙ্ক এবং প্রতীক রয়েছে তা নিশ্চিত করার জন্য RegEx


156

প্রদত্ত স্ট্রিংয়ে নিম্নোক্ত প্রতিটি বিভাগ থেকে কমপক্ষে একটি অক্ষর রয়েছে কিনা তা নিশ্চিত করার জন্য রেজেক্স কী।

  • ছোট হাতের অক্ষর
  • বড় হাতের অক্ষর
  • অঙ্ক
  • প্রতীক

আমি পৃথক সেটের জন্য নিদর্শন যথা জানি [a-z], [A-Z], \dএবং _|[^\w](আমি তাদের সঠিক পেয়েছিলাম আমি, না?)।

তবে স্ট্রিংগুলিতে কোনও ক্রমে এই সমস্ত রয়েছে তা নিশ্চিত করার জন্য আমি কীভাবে তাদের একত্র করব?


কোন প্ল্যাটফর্ম / রেজেক্স-উপভাষা? বার্টের উত্তরটি সঠিক, তবে উদাহরণস্বরূপ জাভাস্ক্রিপ্টে লুকোচুরি দাবিগুলি নির্ভরযোগ্য নয়।
বোবিনস

বিশেষভাবে কোথাও নেই - আমি রেজেক্স শিখছি। জাভাস্ক্রিপ্ট ব্যবহার করা যেতে পারে যে কোন বিকল্প আছে?
আমারঘোষ

@ ববিনস আরে, আমি অনুসন্ধানের চেষ্টা করছি যে জাভাস্ক্রিপ্টে লুক হেডের দাবিগুলি নির্ভরযোগ্য নয়। এ নিয়ে কি লেখার ব্যবস্থা আছে?
ক্রিস বিয়ার 21 ই

@ ক্রিসবি: সত্যই বিভ্রান্তিকর আইই / জেএসক্রিপ্ট
লুকোহেড-

উত্তর:


349

আপনার যদি একটি একক রেজেক্স প্রয়োজন হয় তবে চেষ্টা করুন:

(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W)

একটি সংক্ষিপ্ত ব্যাখ্যা:

(?=.*[a-z])        // use positive look ahead to see if at least one lower case letter exists
(?=.*[A-Z])        // use positive look ahead to see if at least one upper case letter exists
(?=.*\d)           // use positive look ahead to see if at least one digit exists
(?=.*\W])        // use positive look ahead to see if at least one non-word character exists

এবং আমি সাইলেন্টগোস্টের সাথে একমত, \Wকিছুটা বিস্তৃত হতে পারে। আমি এটিকে এর মতো একটি চরিত্রের সাথে প্রতিস্থাপন করব: [-+_!@#$%^&*.,?](অবশ্যই আরও যোগ করতে নির্দ্বিধায়!)


যদি আমি গত পরিবর্তন কি হবে .+মধ্যে .*? আমি ব্যর্থ হয় এমন কোনও পরীক্ষার মামলা নিয়ে আসতে পারিনি .*। তারা কি এই প্রসঙ্গে একই? "শূন্য বা আরও বেশি অক্ষর" ঠিক আছে বলে মনে হচ্ছে - কেবল নিশ্চিতকরণ চাইছে।
আমারঘোষ

@ অমরঘোষ: এক্ষেত্রে এর কোনও পার্থক্য নেই। ইতিবাচক চেহারা দেখার কারণে, স্ট্রিংটিতে ইতিমধ্যে কমপক্ষে 4 টি অক্ষর রয়েছে। সুতরাং এটির .+ক্ষেত্রে .*বা এমনকি এটির জন্য কোনও পরিবর্তন করা যায় না .{4,}
বার্ট কায়ার্স

আপনি যদি কিছুটা ব্যাখ্যা যুক্ত করতে ইচ্ছুক হন তবে এই চেহারাগুলির সংমিশ্রণের গ্যারান্টি কীভাবে প্রতিটি চরিত্রের কমপক্ষে 1 টি উপস্থিত থাকবে তা বুঝতে আমার সমস্যা হচ্ছে
শার্লিক

@ শার্লিক, এটি বুঝতে সহজতর করার জন্য আমি কীভাবে এটি পুনঃব্যবহার করতে জানি না। বিশেষত এই ছোট মন্তব্য-বাক্সগুলিতে। আমি আপনাকে এটি পড়ার পরামর্শ দিচ্ছি: নিয়মিত- এক্সপ্রেসনস.ইন.ফো. / ভিউয়ারাউন্ড এইচটিএমএল এবং যদি আপনার এখনও প্রশ্ন থাকে তবে কেবল নিজের একটি প্রশ্ন পোস্ট করুন। শুভকামনা!
বার্ট কায়ার্স

4
@ কির্তক্সু, এরকম কিছু চেষ্টা করুন:^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?!.*[&%$]).{6,}$
বার্ট কায়ার্স

20

বার্ট কায়ার্স, আপনার রেজেক্সের কয়েকটি সমস্যা আছে। এটি করার সর্বোত্তম উপায় হ'ল:

(.*[a-z].*)       // For lower cases
(.*[A-Z].*)       // For upper cases
(.*\d.*)          // For digits

শুরুতে, শেষে বা মাঝখানে যদি আপনি কোনও বিষয় অনুসন্ধান করছেন। আপনার মধ্যে জটিল পাসওয়ার্ড নিয়ে আমার প্রচুর সমস্যা হয়।


5
ওপি অনুরোধ অনুসারে আপনি প্রতীকগুলি পরীক্ষা করছেন না।
ক্যাসিমির

5

আপনি এই তিনটি গ্রুপকে আলাদা আলাদাভাবে মেলে ফেলতে পারবেন এবং নিশ্চিত করুন যে তারা সবাই উপস্থিত রয়েছে। এছাড়াও, [^\w]কিছুটা বিস্তৃত মনে হয় তবে এটি যদি আপনি চান তবে আপনি এটির সাথে এটি প্রতিস্থাপন করতে চাইতে পারেন \W


ধন্যবাদ। আমি W of সম্পর্কে অবগত ছিলাম না। এটি কেবল শব্দটির সাথে মেলে এটি সন্ধান করুন। \ ডাব্লু এবং [\ ডাব্লু] এর মধ্যে কি কোনও পার্থক্য রয়েছে? [\ ডাব্লু] কি কেবল অপ্রয়োজনীয়?
আমারঘোষ

@ অমরঘোষ, হ্যাঁ, \Wএবং এর [\W]ফলস্বরূপ।
বার্ট কায়ার্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.