เราต้องเขียนฟังก์ชัน JavaScript ที่รับสตริงรหัสผ่านเป็นอาร์กิวเมนต์เดียว ฟังก์ชันต้องคืนค่า true ถ้ารหัสผ่าน:
- ยาวอย่างน้อย 6 ตัวอักษร และสูงสุด 20 ตัวอักษร
- มีตัวเลขอย่างน้อยหนึ่งตัว
- มีตัวอักษรอังกฤษพิมพ์เล็กอย่างน้อยหนึ่งตัว
- มีตัวอักษรอังกฤษพิมพ์ใหญ่อย่างน้อยหนึ่งตัว
- มีตัวอักษรพิเศษอย่างน้อยหนึ่งตัว ตัวอักษรพิเศษคือ: !@#$%^&*()-+
ตัวอย่างโค้ด
const valid = '12Aatab@';
const invalid = '1234ASD+';
const validatePassword = (str = '') => {
const { length: l } = str;
const strArr = str.split('');
if(l < 6 || l > 20) {
return false;
}
const specialCharacters = '!@#$%^&*()-+';
const alphabets = 'abcdefghijklmnopqrstuvwxyz';
const numbers = '0123456789';
const checkWith = (char, set) => set.includes(char);
const containsSpecialCharacter = strArr.some(char => checkWith(char, specialCharacters));
const containsLowercase = strArr.some(char => checkWith(char, alphabets));
const containsUppercase = strArr.some(char => checkWith(char, alphabets.toUpperCase()));
const containsNumber = strArr.some(char => checkWith(char, numbers));
return containsSpecialCharacter && containsLowercase && containsUppercase && containsNumber;
};
console.log(validatePassword(valid));
console.log(validatePassword(invalid));
ผลลัพธ์
true false