마지막으로 Date, RegExp 객체에 대해 알아보겠습니다.
Date는 날짜를 표현하고, RegExp 객체는 정규 표현식이라고 특정한 규칙을 가진 문자열의 집합을 표현합니다. 무슨 소린지 모르겠죠? 일단은 Date 객체부터 알아보죠.
Date
var time = new Date();
new는 또 뭐고 Date는 객체라고 그랬는데 함수처럼 사용하네요? 일단 궁금증은 잠시 참아두고 저렇게 하면 time 변수에 오늘 날짜가 저장된다는 것을 기억해두세요. new와 객체를 함수처럼 사용하는 것은 다음 강좌에 알려드릴게요. 특정한 날짜를 저장하려면 다음과 같이 하면 됩니다. 예를 들어 8월 12일(제 생일)은요.
var time = new Date(1994, 7, 12);
이제 날짜가 저장된 변수를 사용해서 여러가지 일을 할 수 있습니다. 8 대신 7을 넣은 이유는 아래에 나옵니다. 오타가 아니에요.
날짜.getFullYear(), 날짜.setFullYear(연도)
연도를 가져오거나, 연도를 저장하는 메소드입니다. 날짜.getYear()
, 날짜.setYear()
이었지만 2000년 이후를 표시하지 못해서 새로운 함수로 바뀌었습니다. 예전 함수도 남아있긴 하지만 쓰지 마세요.
날짜.getMonth(), 날짜.setMonth(달)
달을 알려주거나 저장하는 함수입니다. 주의할 점은 달은 특이하게 0부터 시작합니다. 즉 1월이 0이고 12월이 11입니다. 그래서 달을 표시하고 싶으면 날짜.getMonth() + 1
을 해야합니다.
날짜.getDate(), 날짜.setDate()
날짜를 알려주거나 저장합니다.
날짜.getDay(), 날짜.setDay()
요일을 알려주거나 저장합니다. 일요일이 0입니다. 화요일이면 2고, 토요일이면 6입니다.
날짜.getHours(), 날짜.getMinutes(), 날짜.getSeconds()
각각 시, 분, 초를 가져옵니다.
날짜.setHours(), 날짜.setMinutes(), 날짜.setSeconds()
각각 시, 분, 초를 설정합니다.
날짜.toString(), 날짜.toLocaleString(), 날짜.toUTCString()
날짜를 문자로 바꿔 표현합니다. 각각 현재 날짜 정보, 보기 좋은 날짜 정보, 세계시 기준 정보를 보여줍니다.
위의 메소드들을 활용해서 날짜 계산을 할 수 있습니다. 제 생일에서 5일을 빼고 싶다면 다음과 같이 하세요.
time.setDate(time.getDate() - 5);
time.getDate(); // 7 (1994년 8월 7일);
알아서 월이 바뀌는 것까지 계산해줍니다. 더하는 것도 마찬가지고요. 시간 계산 참 쉽죠?
time.setDate(time.getDate() - 10);
time.getDate(); // 28 (1994년 7월 28일)
time.getMonth() + 1; // 7
월도 마찬가지입니다! 6개월 뒤로 가볼까요?
time.setMonth(time.getMonth() + 6);
time.getMonth() + 1; // 1 (1995년 1월 28일)
RegExp
RegExp 객체는 복잡해서 여기서 다 알려드릴 수는 없습니다만, 간단히 예를 들자면, ['사자','과자','과일','타자','타일']
배열이 있으면 여기서 "자"로 끝나는 단어를 고른다든지, "사"로 시작하는 단어를 고른다든지 하는 겁니다.
즉, 문자열에서 특정한 패턴을 찾아줍니다.
var array = ['사자', '과자', '과일', '타자', '타일'];
var result = [];
array.forEach(function(item) {
if (item.match(/자$/)) {
result.push(item);
}
});
console.log(result); // ['사자', '과자', '타자']
위와 같이 하면 자로 끝나는 문자열을 찾을 수 있습니다. /자$/
이 부분이 정규 표현식입니다. /패턴/
이런 형식이면 됩니다. 위에서는 $는 끝을 뜻합니다. 따라서 끝 바로 전이 '자'인 패턴, 즉 '자'로 끝나는 패턴을 의미합니다.
var array = ['사자', '과자', '과일', '타자', '타일'];
var result = []; array.forEach(function(item) {
if (item.match(/^과/)) {
result.push(item);
}
});
console.log(result); // ['과자', '과일']
이번에는 /^과/ 입니다. ^는 시작을 뜻합니다. 따라서 과로 시작하는 패턴입니다.
문자열.match(패턴)
문자열에 해당하는 패턴이 있으면 배열로 해당하는 부분을 반환합니다. 해당하는 패턴이 없으면 null을 반환합니다.
문자열.search(패턴)
문자열에 해당하는 패턴이 있으면 그 위치(index)를 반환합니다. 해당하는 패턴이 없으면 -1을 반환합니다.
패턴.test(문자열)
패턴과 일치하면 true를 아니면 false를 반환하는 메소드입니다. 이를 통해서 패턴과 일치하는 지 확인할 수 있습니다.
패턴.exec(문자열)
패턴과 일치하면 배열을 반환하는데 첫 번째 요소는 일치하는 문자열을 반환하고, 두 번째 요소부터는 정규표현식의 group(괄호)을 반환합니다.
간단히 정규 표현식을 알아봤습니다. 여기서는 다 알려드릴 수 없어서 링크로 대체하겠습니다! 한 번 배우면 자바스크립트 외에도 여러 프로그래밍 언어에서 사용할 수 있습니다.