본문 바로가기
알고리즘/Codewars

[Codewars] Regex validate PIN code (7 kyu) / JavaScript

by fluss 2022. 12. 20.

https://www.codewars.com/kata/55f8a9c06c018a0d6e000132

 

Codewars - Achieve mastery through coding practice and developer mentorship

A coding practice website for all programming levels – Join a community of over 3 million developers and improve your coding skills in over 55 programming languages!

www.codewars.com

 

DESCRIPTION:

ATM machines allow 4 or 6 digit PIN codes and PIN codes cannot contain anything but exactly 4 digits or exactly 6 digits.

 

If the function is passed a valid PIN string, return true, else return false.

 

Examples (Input --> Output)

"1234"   -->  true
"12345"  -->  false
"a234"   -->  false
 
 

설명:

ATM 기계는 4자리 또는 6자리 PIN 코드를 허용하며 정확히 4자리 또는 6자리 숫자 외에는 어떤 것도 포함되지 않습니다.

 

함수에 유효한 PIN 문자열이 전달되면 true를 아니면 false를 반환하세요.

 

예시 (입력 --> 출력)

"1234"   -->  true
"12345"  -->  false
"a234"   -->  false
 

풀이

입력받은 문자열의 길이가 4 또는 6이고 문자열에서 숫자를 모두 제거한 결과가 입력받은 문자열과 같다면 true를 그렇지 않다면 false를 반환하였다.

 

코드

function validatePIN (pin) {
  const reg = /[^0-9]/g;
  const num = pin.replace(reg, '');
  if((pin.length === 4 || pin.length === 6) && pin === num) return true;
  return false;
}

 

다른 사람의 좋았던 풀이

function validatePIN(pin) {
  return /^(\d{4}|\d{6})$/.test(pin)
}

 

참고

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

 

RegExp.prototype.test() - JavaScript | MDN

test() 메서드는 주어진 문자열이 정규 표현식을 만족하는지 판별하고, 그 여부를 true 또는 false로 반환합니다.

developer.mozilla.org

 

댓글