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

۱۳۹۹-۱۱-۲۴ ۰۹:۰۸:۰۹
در این مقاله سعی کردم شما رو با اعتبار سنجی رمز عبور در زبان های مختلف برنامه نویسی آشنا کنم. با من در ادامه مقاله همراه باشید.

معرفی

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

REGEX

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

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

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

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

(?=.*[a-z])

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

(?=.*[A-Z])

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

(?=.*[0-9])

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

(?=.*[[email protected]#\$%\^&\*])

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

(?=.{8,})

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

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

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

مثال

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

Example

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

PHP

<?php 
$regex = "/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[[email protected]#\$%\^&\*])(?=.{8,})/"
$string = &[email protected]"

if(preg_match($regex, $string, $match)) 
{
  echo "We found a match to the expression: " . $match[0];
} 
else 
{
  echo "We found no match."
}

JS

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

console.log(found);

Python

import re

password = &[email protected]"
x = re.search("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[[email protected]#\$%\^&\*])(?=.{8,})", password)

if x:
  print("YES! We have a match!")
else:
  print("No match")
password_validation regex برنامه نویسی رمز_عبور عبارت_منظم