22-10-13-JavaScript(7) 정규표현식, Date()

YJ·2022년 10월 13일
0
post-thumbnail

정규표현식

문자열에서 특정 내용을 찾거나 대체, 발췌하는데 사용
- 각각 다른 포맷으로 저장된 전화번호 데이터 추출
- 사용자 입력 데이터가 올바른지 검증
- 해당 변수 이름 포함하고 있는 함수 제외하고 싶을 때
- 특정 조건, 위치에 따른 특수문자 제거하고 싶을 때

가독성이 좋지 않다.

/패턴/플래그
형식으로 구성

정규식 메서드

매칭 필터링을 위해 정규식 메서드를 통해 패턴 검사하여 문자열 추출
메서드의미
("문자열").match(/정규표현식/플래그)매칭되는 항목 배열로 반환
("문자열").replace(/정규표현식/, "대체문자열")매칭되는 항목 대체문자열로 반환
("문자열").split(정규표현식)매칭되는 항목 쪼개어 배열로 반환
(정규표현식).test("문자열")정규표현식과 문자열이 매칭되면 true, false 반환
(정규표현식).exec("문자열")무조건 첫 번째 매칭 결과만 반환

정규식 플래그

정규식 생성할 때 고급 검색을 위한 옵션 설정
플래그의미설명
iignore Case대소문자 구별하지 않고 검색
gglobal문자열 내 모든 패턴 검색
mmultiline여러줄 계속 검색
s개행 문자도 포함하도록
uunicode유니코드 전체 지원
ysticky특정 위치에서 검색 진행하는 모드 활성화

일반 문자열

/hello/g

처음과 끝 ^,$

// 시작에 hello
/^hello/g
// 끝에에 hello
/hello$/g
// 처음과 끝 둘 다
/^hello$/g

모든 문자 매핑 .

/hello/g
/^h.llo$/g   -> hello, hallo
/^h..llo$/g     -> heallo
/hello..world/g   -> "hello, world"

택1 []

/h[eao]llo/g       -> 대괄호 안에 있는 텍스트 중 1개 택함

범위 -

범위를 지정하여 매칭하고 싶은 경우
/h[a-f]llo/g
/h[a-zA-Z]llo/g

부정 ^

해당 문자열을 제외하고 찾고 싶은 경우
/h[^ae]llo/g       -> not 의미로 a,e가 아닌것 (hollo)

수량자 * + ? {}

해당 문자가 몇개 있는지 명시하여 패턴 검색
_* : 앞에 있는 문자가 0개 ~ N개 {0,}
_+ : 앞에 있는 문자가 1개 ~ N개 {1,}
_? : 앞에 있는 문자가 0개 ~ 1개 {0,1}

{3} : 3개
{3,} : 3개 이상
{1,3} : 1개 ~ 3개

캐릭터 클래스

자주 사용되는 문자 패턴을 캐릭터 클래스로 제공
/\w/gm : 워드
/\w{5} /gm : 5개의 글자와 스페이스 하나
/\W/gm : not 워드
/\d/gm : 숫자
/\D/gm : not 숫자
/\s/gm : 스페이스
/\S/gm : not 스페이스

이스케이프 문자

백슬러쉬를 이용하여 특수 문자를 표현
/\[.*]/gm : 대괄호([]) 안에 감싸여진 문자열
/\(.*\)/gm : 소괄호 안에 감싸여진 문자열
/\\.*\//gm : 이미 사용되고 있는 특수문자로 감싸여진 문자열
/-.*-/gm : 이스케이프 문자를 사용할 필요가 없는 경우
/\^\^/gm : 이스케이프 문자가 필요한 경우
/:\)/gm : 이스케이프 문자가 필요한 경우
/*
- `^` : 문자열의 시작
- `$` : 문자열의 종료. 옵션에 따라 문장의 끝 또는 문서의 끝에 매치된다.
- `.` : 임의의 한 문자
- `[]`: 문자 클래스. 문자 클래스 안에 들어가 있는 문자는 그 바깥에서 하나의 문자로 취급된다.
- `^` : 문자 클래스 내에서 ^는 not
- `-` : ex) a-z는 a에서 z까지의 문자
- `|` : or를 나타냄
- `?` : 앞 문자가 없거나 하나 있음
- `+` : 앞 문자가 하나 이상임
- `*` : 앞 문자가 0개 이상임
- `{n,m}` : 앞 문자가 `n`개 이상 `m`개 이하. `{0,1}` 은 `?`와 같은 의미다.
- `{n,}` : 앞 문자가 `n`개 이상. 위의 형태에서 `m`이 생략된 형태이다. `{0,}` 이면 `*`와 같고 `{1,}` 이면 `+`와 같은 의미이다.
- `{n}` : 앞 문자가 정확히 `n`개. `{n,n}` 과 같은 의미이다.
- `()` : 하나의 패턴구분자 안에 서브 패턴을 지정해서 사용할 경우 괄호로 묶어주는 방식을 사용한다.
- `\s` : 공백문자
- `\b` : 문자와 공백 사이를 의미한다.
- `\d` : 숫자 [0-9]와 같다.
- `\t` : 탭문자
- `\w` : 단어 영문자+숫자+_(밑줄) [0-9a-zA-Z_]문자 이스케이프는 대문자로 적으면 반대를 의미한다.
[a-z] : a ~ z 사이의 문자를 찾음
[1-9] : 1 ~ 9 사이의 문자를 찾음
[abc] : a, b, c중 하나를 찾음
[^abc] : a, b, c를 제외한 문자를 찾음
.z : 아무 문자 하나를 . 기호로 찾으며 z로 끝남을 의미
a+ : a가 1개 이상을 의미함
a* : a가 0개 또는 그 이상을 의미함
s : 공백 문자를 찾음(스페이스, 탭 등), 대문자의 경우 아닌 문자를 찾음
d : 숫자를 찾음, 대문자의 경우 아닌 문자를 찾음
w : 알파벳 영문과 숫자와 언더바 _ 기호를 찾음, 대문자의 경우 아닌 문자를 찾음
t : 탭 공간을 찾음
g : 검색범위를 전역으로 확장
i : 대소문자를 구분하지 않음
gi : 검색 범위를 전역으로 확대하면서 대소문자를 구분하지 않음
m : 여러줄을 동시에 매칭함
*/

Date()

let d = new Date();
// Date() 현재 날짜와 시간을 나타내는 문자열을 반환

getDate()

d.getDate(); 현지 시간 기준 일을 반환
1일 - 31일

getDay()

d.getDay();
0(일요일)부터 시작

getMonth()

d.getMonth();
현지 시간 기준 월(0 - 11)을 반환
-> d.getMonth()+1 해야함

getHours()

d.getHours()
현지 시간 기준 시 (0-23)을 반환

getMinutes()

d.getMinutes()
현지 시간 기준 분 (0-59)를 반환

getSeconds()

d.getSeconds()
현지 시간 기준 초(0-59)를 반환

getFullYear()

d.getFullYear()
현지 시간 기준 연도를 반환

예시

new Date(2023, 0, 21);
// 2023년 1월 21일

new Date('2023/1/20/10:00:00');
// 가독성이 더 좋다.
// 2월이 아닌 1월로 표시!!

today = new Date('2023/1/20/10:00:00');
//UTC와 today의 지정 로캘 KST와의 차이는 -9시간이다.
today.getTimezoneOffset(); // 60

today.toString();     // -> Fri Jul 24 2020 12:30:00 GMT+0900 (대한민국 표준시)
today.toTimeString(); // -> 12:30:00 GMT+0900 (대한민국 표준시)

// 국가코드
today.toLocaleString('ko-KR'); // -> 2020. 7. 24. 오후 12:30:00
today.toLocaleString('en-US'); // -> 7/24/2020, 12:30:00 PM
today.toLocaleString('ja-JP'); // -> 2020/7/24 12:30:00
profile
함께 배워나가고 싶습니다!

0개의 댓글