Problem
- ATM machines allow 4 or 6 digit PIN codes and PIN codes cannot contain anything but exactly 4 digits or exactly 6 digits.
- ATM 기계는 정확히 4 또는 6자리 PIN 코드를 사용한다.
- If the function is passed a valid PIN string, return true, else return false.
- 함수에 유효한 PIN 문자열이 전달되면 true를 반환하고, 그렇지 않으면 false를 반환한다.
Solution 01
function validatePIN(str) {
if (str.length !== 4 && str.length !== 6) {
return false;
}
for (let i = 0; i < str.length; i++) {
if (str[i] < '0' || str[i] > '9') {
return false;
}
}
return true;
}
validatePIN('1234'); // true
validatePIN('12345'); // false
validatePIN('123456'); // true
validatePIN('-234'); // false
validatePIN('.234'); // false
validatePIN('a234'); // false
Solution 02
function validatePIN(str) {
return (/^[0-9]{4}$|^[0-9]{6}$/).test(str);
}
validatePIN('1234'); // true
validatePIN('12345'); // false
validatePIN('123456'); // true
validatePIN('-234'); // false
validatePIN('.234'); // false
validatePIN('a234'); // false
^
: 입력의 시작 부분에 대응
$
: 입력의 끝 부분에 대응
|
: or
{n}
: 앞의 문자열이 정확히 n번 나타나는 부분에 대응
test()
: 대응되는 문자열이 있는지 검색하고, true/false를 반환한다.
Solution 03
function validatePIN(str) {
return (/^\d{4}$|^\d{6}$/).test(str);
}
validatePIN('1234'); // true
validatePIN('12345'); // false
validatePIN('123456'); // true
validatePIN('-234'); // false
validatePIN('.234'); // false
validatePIN('a234'); // false
\d
: 숫자에 대응
Solution 04
function validatePIN(str) {
return /^(\d{4}|\d{6})%/.test(str);
}
validatePIN('1234'); // true
validatePIN('12345'); // false
validatePIN('123456'); // true
validatePIN('-234'); // false
validatePIN('.234'); // false
validatePIN('a234'); // false
Solution 05
function validatePIN(str) {
const isCorrectLength = str.length === 4 || str.length === 6;
const isCorrectNumber = str.match(/^\d+$/);
if (isCorrectLength && isCorrectNumber) {
return true;
}
return false;
}
validatePIN('1234'); // true
validatePIN('12345'); // false
validatePIN('123456'); // true
validatePIN('-234'); // false
validatePIN('.234'); // false
validatePIN('a234'); // false
match()
: 문자열에서 정규식과 일치하는 문자를 검색하고, 배열로 반환한다.
+
: 1회 이상 연속으로 반복되는 부분에 대응