royalsite logo

28 اسفند 1403

form validation banner

آموزش اعتبارسنجی حرفه‌ای فُرم های HTML + ریجکس شماره تلفن

در برنامه‌نویسی راه های زیادی برای اعتبارسنجی اطلاعات کاربران وجود دارد، ما در این آموزش بهترین و بهینه‌ترین راه را به شما آموزش می‌دهیم که علاوه بر کاهش زمان، دقت و امنیت بیشتری را تضمین می‌کند.

پیش نیازها

  1. آشنایی ابتدایی با HTML
  2. آشنایی با JavaScript در صورت نیاز

معرفی ویژگی های اعتبارسنجی HTML

ویژگی required

ویژگی required در HTML برای تعیین فیلدهای اجباری در فرم‌ها استفاده می‌شود. اگر این ویژگی برای یک فیلد ورودی تنظیم شود، مرورگر کاربر را مجبور می‌کند پیش از ارسال فرم این فیلد را پر کند.

می‌توانید این ویژگی را در تگ های

<select> , <textarea> , <input> استفاده کنید.

<input type="text" required />

ویژگی minLength

این ویژگی حداقل تعداد کاراکترهایی که کاربر باید وارد کند را تعیین می‌کند. اگر کاربر کمتر از مقدار مشخص‌شده وارد کند، فرم ارسال نخواهد شد و پیام خطا نمایش داده می‌شود.

<input type="text" required minLength="4" />

ویژگی maxLength

این ویژگی حداکثر تعداد کاراکترهایی که کاربر می‌تواند وارد کند را محدود می‌کند. اگر کاراکترهای ورودی بیشتر از مقدار مشخص‌شده باشد، کاربر نمی‌تواند متن بیشتری وارد کند.

<input type="text" required maxLength="20" minLength="4" />

اعتبارسنجی با Regex

ویژگی pattern در تگ های HTML یک ورودی Regex دریافت می‌کند و اگر ورودی با این الگو مطابقت نداشته باشد، مرورگر به صورت خودکار اعتبارسنجی را نامعتبر اعلام می‌کند.

<input type="text" pattern="[A-Za-z0-9]+" required maxLength="20" minLength="4" />

اعتبارسنجی فرم احرازهویت

برای اینکه فرآیند یادگیری شما ساده‌تر و کامل‌تر شود، یک نمونه عملی واقعی برایتان آماده کرده‌ایم. این نمونه به شما کمک می‌کند مفاهیم را به شکل عمیق‌تری درک کنید و کاربرد عملی آن‌ها را بهتر بشناسید.

اعتبارسنجی شماره تلفن همراه

^(09\d{9}|989\d{9})$ این الگو برای اعتبارسنجی شماره تلفن‌های همراه در ایران طراحی شده است.

توضیح این الگو

^ : نشان می‌دهد که تطابق باید از ابتدای رشته شروع شود.

$ : تضمین می‌کند که رشته در همان انتها پایان یابد.

: 09\d{9}|989\d{9} یکی از دوحالت زیر امکان دارد :

: 09\d{9} یعنی رشته باید با 09 شروع شود و به دنبال آن دقیقاً ۹ رقم عددی باشد.

: 989\d{9} رشته باید با 989 شروع شود و به دنبال آن دقیقاً ۹ رقم عددی باشد.

<form>
<label for="phone">شماره تلفن</label>
<input type="text" pattern="^(09\d{9}|989\d{9})$" required id="phone" name="phone" />
</form>

اعتبارسنجی رمزعبور

^[A-Za-z0-9]{4,20}$ در این قسمت از این الگو برای اعتبارسنجی رمزعبور استفاده کردیم.

توضیح این الگو

^ : نشان می‌دهد که تطابق باید از ابتدای رشته شروع شود.

[A-Za-z0-9] : فقط حروف کوچک (a-z)، حروف بزرگ (A-Z) و اعداد (0-9) مجاز هستند.

{4,20} : رمز عبور باید حداقل ۴ کاراکتر و حداکثر ۲۰ کاراکتر طول داشته باشد.

$ : تضمین می‌کند که رشته در همان انتها پایان یابد.

<form>
...
<label for="password">رمزعبور</label>
<input type="password" pattern="^[A-Za-z0-9]{4,20}$" required id="password" name="password" />
<label for="confirmPassword">تکرار رمزعبور</label>
<input type="password" pattern="^[A-Za-z0-9]{4,20}$" required id="confirmPassword" name="confirmPassword" />
</form>

اعتبارسنجی نام کاربری

^[A-Za-z0-9]{3,15}$ در این بخش، از این الگوی برای اعتبارسنجی نام‌کاربری استفاده شده است که توضیحات مربوط به آن در قسمت قبلی ارائه شده است.

<form>
...
<label for="username">نام کاربری</label>
<input type="text" pattern="^[A-Za-z0-9]{4,20}$" required id="username" name="username" />
</form>

تغییر پیام خطای پیش‌فرض مرورگر

هنگامی که ویژگی required را به تگ های اینپوت می‌دهیم اگر شرط های اعتبارسنجی رد شوند مرورگر یک متن پیش‌فرض به کاربر نمایش می‌دهد، حال اگر بخواهیم آن متن پیش‌فرض را تغییر بدیهم از کد زیر استفاده می‌کنیم.

browser-default-warn
custom-browser-warn
const phoneInput = document.getElementById("phone")
phoneInput.addEventListener("input",()=>{
const regex = /^(09\d{9}|989\d{9})$/;
if (!regex.test(phoneInput.value)) {
phoneInput.setCustomValidity("شماره تلفن باید از اعداد لاتین باشد و با 09 یا 989 شروع شود");
} else {
phoneInput.setCustomValidity(""); // اگر شماره صحیح بود پیام خطا را پاک کنید
}
})

اعتبارسنجی پایانی و ارسال فُرم

اعتبارسنجی ما در HTML به پایان رسیده است و اکنون قصد داریم با استفاده از جاوااسکریپت، اعتبارسنجی را به سطحی بالاتر و کامل‌تر ارتقا دهیم.

const password = document.getElementById("password");
const confirmPassword = document.getElementById("confirmPassword");
const myForm = document.querySelector("form");
myForm.addEventListener("submit",async (event)=>{
event.preventDefault();
if (password.value === confirmPassword.value) {
const formData = new FormData(myForm);
const response = await fetch("SERVER_ENDPOINT", {
method: "POST",
body: formData,
});
if (response.ok){
const result = await response.json();
alert(result)
}else alert("مشکلی رخ داده، لطفا مجددا تلاش کنید")
}else{
alert("رمزعبور با تکرار آن مطابقت ندارند")
}
})

توضیحات کد بالا

event.preventDefault : از رفرش شدن صفحه جلوگیری می‌کند و ما می‌توانیم اعتبارسنجی را انجام دهیم.

سپس در شرط چک می‌کنیم که اگر دو رمزعبور با یکدیگر مطابقت نداشتند یک پیام تذکر به کاربر نمایش داده شود.

و در آخر فُرم را به سرور ارسال می‌کنیم و پاسخ را به کاربر نمایش می‌دهیم.

نتیجه گیری

در این آموزش، شما با تمامی ویژگی‌های HTML برای اعتبارسنجی فرم‌ها آشنا شدید. ما نحوه‌ی استفاده از این قابلیت‌ها را به صورت کلی آموزش دادیم و شخصی‌سازی آن‌ها به عهده‌ی خودتان است.

اگر در هر بخشی از این آموزش به نکته‌ای برخورد کردید که برایتان نامفهوم یا نیازمند توضیح بیشتر است، خواهشمندیم که با ارسال تیکت به ما، پیشنهاد یا سوالتان را مطرح کنید.

royalsite admin

نوشته شده توسط متین قاسمی مدیر آکادمی رویال سایت

Senior Frontend Developer

Senior Backend Developer

SEO Webmaster

Data Analyst

با بیش از سه سال تجربه طراحی سایت

instagram icon
telegram icon
sorush messenger icon
igap messenger icon
Linkedin platform