코딩테스트 연습 - 문자열 다루기 기본 js ★★★☆☆
코딩테스트 연습 - 문자열 다루기 기본 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 문자열 다루기 기본
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1
programmers.co.kr
문자열에 숫자만 포함됐는지 확인하는 문제다. 정규식을 사용하려 했다.
1차 시도
function solution(s) {
let answer = true;
const regex = /[0-9]/g; // 0~9까지의 숫자인 정규식
//includes 정규식 안된다.
return s.includes(regex) === true ? true : false;
}
// 실패, includes는 정규식을 못쓴다
includes()말고 match()를 찾아서 썼다. 정규식을 써도 된다고 했다.
String.prototype.match() - JavaScript | MDN (mozilla.org)
String.prototype.match() - JavaScript | MDN
match() 메서드는 문자열이 정규식과 매치되는 부분을 검색합니다.
developer.mozilla.org
2차 시도
function solution(s) {
let answer = true;
const regex = /[0-9]/g; // 0~9까지의 숫자인 정규식
let matchedStr = s.match(regex).join('');
console.log(matchedStr);
return s === matchedStr ? true : false;
}
되다 안되다 한다. 다른 답을 참고하자
다른 답에서 isNaN, parseInt를 썼다. MDN에서 isNaN -> Number.isNaN으로 바뀌었다. 확인하기
function solution(s) {
if(s.length === 4 || s.length === 6){
if(Number.isNaN(parseInt(s)))
return false;
else {return true;}
}
}
정규식으로 한 사람의 코드를 참고했다. 내 코드의 정규식을 잘못썼었다. 수정 후 코드
function solution(s) {
const regex = /^[0-9]*$/; // 0~9까지의 숫자가 아닌 정규식
if (s.length == 4 || s.length == 6)
return regex.test(s);
else{
return false;
}
}
자주쓰는 정규식 패턴
숫자만 : ^[0-9]*$
영문만 : ^[a-zA-Z]*$
영문만, 띄어쓰기가능 : /^[a-zA-Z\s]+$/
한글만 : ^[가-힣]*$
한글만,띄어쓰기가능 : /^[가-힣\s]+$/
한글 & 영문만 : /^[가-힣a-zA-Z]+$/;
영문 & 숫자만 : ^[a-zA-Z0-9]*$
E-Mail : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$
휴대폰 : ^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$
일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$
URL : /^(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/
주민등록번호 : \d{6} \- [1-4]\d{6}
IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})
정규식 (참고 : 문자열 다루기 기본 : 정규식패턴사용 (tistory.com))