مسعود زرجانی
مسعود زرجانی
خواندن ۱ دقیقه·۴ سال پیش

اعتبار سنجی رمز عبور با عبارت منظم - Password validation with regex

REGEX
REGEX


معرفی

حتما تا به حال با این موضوع مواجه شدید که بخواید برای صفحه ثبت نام کاربر یا ورود کاربر رمز عبورشون رو بررسی کنید و ببینید که اصلا رمز عبور حداقل نیاز ها مثل حروف و عدد همزمان درش به کار رفته یا نه که البته این بررسی هم سمت کلاینت و هم سمت سرور باید انجام بشه تا اعتبار به تایید برسه. برای انجام این کار روش های مختلف هست مثلا بررسی کاراکتر ها و گذاشتن شرط های مختلف یا استفاده از پیکج های آماده یا ارسال به وب سایت هایی که خدمات اعتبار سنجی رو بهتون میدن ولی یکی از ساده ترین روش هایی که من بهتون معرفی میکنم استفاده از کلمات با قاعده است.

REGEX

برای بررسی صحت و اعتبار سنجی رمز عبور باید رشته ورودی که دارید رو با رشته زیر مقایسه کنید و ببینید آیا با هم منطبق هستند یا نه.

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

کد بالا رو می تونید به راحتی در هر زبان برنامه نویسی استفاده کنید.

توضیحات تکمیلی

(?=.*[a-z])

این بخش برای تشخیص حروف کوچک در عبارت اصلی است.

(?=.*[A-Z])

برای تشخصی حروف بزرگ هم به این شکل مشخص میکنیم.

(?=.*[0-9])

بخش سوم تشخیص اعداد در عبارت است.

(?=.*[!@#\$%\^&\*])

تشخیص کاراکتر های خاص.

(?=.{8,})

با این کد آخر هم می تونیم حداقل کاراکتر های ورودی رو مشخص کنیم.

نکته 1: می تونیم رشته تشخیص حداقل کاراکتر ها رو از Regex حذف کنیم.

نکته 2: می تونیم رشته های اعتبار سنجی دیگری هم به کد اضافه کنیم.

مثال

برای مشاهده نمونه خروجی و بررسی عبارت می تونید از لینک زیر استفاده کنید.

Example regex

من چند نمونه از زبان هایی رو که این کد رو میتونید داخلش قرار بدید و بررسی کنید براتون میزارم

PHP

<?php $regex = &quot/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/" $string = &quotTest123456@" if(preg_match($regex, $string, $match)) { echo &quotWe found a match to the expression: &quot . $match[0]; } else { echo &quotWe found no match." }

JS

let password = 'Test123456@'; let regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/; let found = password.match(regex); console.log(found);

Python

import re password = &quotTest123456@&quot x = re.search(&quot^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})&quot, password) if x: print(&quotYES! We have a match!&quot) else: print(&quotNo match&quot)

برای دیدن مقالات بیشتر می تونید به وبلاگ شخصی من مراجعه کنید


Masoudzarjani.ir

regexرمز عبورpasswordvalidationبرنامه نویسی
یک علاقه مند به برنامه نویسی https://masoudzarjani.ir/
شاید از این پست‌ها خوشتان بیاید