Kiểm tra email hay password không phải là điều hiếm gặp, nhất là làm frontend nữa. Dưới đây mình có một ví dụ, hãy thử xem bạn thuộc nhóm làm nhé.


Yêu cầu kiểm tra một string password có thỏa mãn những điểu kiện sau hay không?

  • Độ dài ít nhất 8 ký tự
  • Chứa ít nhất một chữ cái viết thường
  • Chứa ít nhất một chữ cái viết hoa
  • Chứa ít nhất một số
  • Chứa ít nhất một ký tự đặc biệt


Người nghĩ chăm chỉ sẽ làm:


function validatePassword(password) {
 if (password.length < 8) {
  return false;
 }
 var hasLowercase = false;
 var hasUppercase = false;
 var hasNumber = false;
 var hasSpecial = false;
 for (var i = 0; i < password.length; i++) {
  var ch = password[i];
  if (ch >= 'a' && ch <= 'z') {
   hasLowercase = true;
  } else if (ch >= 'A' && ch <= 'Z') {
   hasUppercase = true;
  } else if (ch >= '0' && ch <= '9') {
   hasNumber = true;
  } else if (ch === '@' || ch === '$' || ch === '!' || ch === '%' || ch === '*' || ch === '?' || ch === '&') {
   hasSpecial = true;
  }
 }
 return hasLowercase && hasUppercase && hasNumber && hasSpecial;
}


Người bình thường sẽ làm:


function validatePassword(password) {
  if (password.length < 8) {
    return false;
  }
  var hasLowercase = false;
  var hasUppercase = false;
  var hasNumber = false;
  var hasSpecial = false;
  for (var i = 0; i < password.length; i++) {
    var ch = password[i];
    if (/[a-z]/.test(ch)) {
      hasLowercase = true;
    } else if (/[A-Z]/.test(ch)) {
      hasUppercase = true;
    } else if (/[0-9]/.test(ch)) {
      hasNumber = true;
    } else if (/[@$!%*?&]/.test(ch)) {
      hasSpecial = true;
    }
  }
  return hasLowercase && hasUppercase && hasNumber && hasSpecial;
}


Còn người lười sẽ làm:


function validatePassword(password) {
  var regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
  return regex.test(password);
}


// Đoạn code trên được tài trợ bởi openai


Ref: https://dev.to/sineni/regex-for-lazy-developers-cg1