
let str1 = "Very"; let str2 = "Good"; let str3 = "3"; console.log(str1 + str2); // "VeryGood" console.log(str3 + 7); // "37" str1 + str2 === str1.concat(str2)
조금 더 자세한 내용은 배열 내용을 다룰 때 자세히 알아보도록 하자!
Primitive Data Type (원시타입) = immutable value
ex) Boolean, null, undefined, Number, String, Symbol
Reference Data Type (참조타입) = mutable value
ex) array, object, function
let regex = /정규식/ let regex = new RegExp("정규식")
플래그 = 정규식 뒤에 붙어서 사용되는 것.
g : 전역 검색, 문자열 전체 조합을 검색.
i : 대소문자 구분 없는 검색.flag = /pattern/flags // 예를들면 => /pattern/gi flag = new RegExp("pattern","flags")
test = 특정 문자열이 정규식을 만족하는지 여부 판단. Boolean 값 반환.
let regex = /baby/ let str = "baby" let result = regex.test(str); // true => 문자열 baby가 정규식을 만족하므로 true를 반환한다.
replace = 정규식을 만족하는 부분을 찾으면 그 부분을 다른 텍스트로 replace한다.
let str = "DABC" let regex = /[DB]/g // g라는 flag가 있기에 문자열 전체를 검색한다. let result = str.replace(regex, "A") // "AAAC" => 알파벳 D, B를 만나면 A로 변환.
exec = 문자열에서 값을 찾으면 그 위치를 기억하고 있다가 그 부분에 대한 정보를 반환한다. 검색이 끝나면 null 반환.
let str = "You are my everything." let regex = /[a-z]+/gi // a-z 사이의 알파벳을 이어붙인 것 + g flag + i flag while((result = regex.exec(str)) !== null) { // 결과값이 null이 아닌 값을 반복해서 돌린다. console.log(result); //result내에 각 문자열이 배열로 담긴다. ex) result[0] = "You" } //단순히 regex.exec(str)만 적으면 exec 함수의 특성상 global flag를 붙여도 일치하는 첫번째 값만 반환한다. //그러나 str.match(regex)로 적으면 match에 의해 global flag가 있을 시 전부 다 찾아준다.
[ab] : 대괄호 안에 a, b 중 한 개의 문자라도 있다면 true
[^ab] : 대괄호 안에 a, b 중 한 개의 문자라도 없다면 true
[a-z] : 소문자 a에서 z까지
[A-Z] : 대문자 A에서 Z까지
[0-9] : 숫자 0에서 9까지
[ㄱ-힣] : 한글 (자음포함)
[가-힣] : 한글 (자음제외)
\d : [0-9]와 동일 // \는 역슬래시로 작성바란다.
\D : [^0-9]와 동일
\w : [a-zA-Z0-9_]
\W : [^a-zA-Z0-9_]
regex = /[xyz]/ "XyZ" 테스트 : false // 대소문자 구분하기에 "X","Z" 해당사항 없음. regex = /[xyx]/i "XyZ" 테스트 : true // i flag 사용하였기에 대소문자 구분없음. regex = /[a-z]/ "abc" 테스트 : true // a부터 z까지의 알파벳 중 하나이상이 포함되어 있음. regex = /[a-zA-Z]/ "123a" 테스트 : true // a하나가 포함되어 있음. regex = /[0-9]/ "abc" 테스트 : false // 0부터 9까지의 숫자가 포함되어 있지 않음.
마침표 = 모든 문자 범위의 한 글자. 스페이스나 엔터 등의 화이트스페이스도 포함.
regex = /./ regex.test("a") // true regex.test(" ") // true regex.test(undefined) // true regex.test(null) // true
서컴플렉스 = 문자열의 시작 위치에 특정 문자가 있는지 확인한다.
regex = /^e/ // e로 시작한다. "abc" // false "ebc" // true => 문자열이 e로 시작함. regex = /^[de]/ // d 또는 e로 시작한다. "dab" // true "eab" // true
달러 = 문자열 끝 위치에 특정 문자가 있는지 확인한다.
regex = /b$/ "acdb" // true // 문자열 끝에 b가
시작 끝 기호 = 문자열 내용이 정확히...와 일치하는지 확인한다.
let regex = /^same$/ // 정확히 same이라면 regex.test("same") // true
덧셈 기호 = 특정 문자열에서 그 문자열이 1회 이상 반복되는지 확인.
regex = /k+/ "ka" // true "kka" // true
별표 = 특정 문자열에서 그 문자열이 0회 이상 반복되는지 확인.
regex = /a*/ "a", "ab", "exception" // true regex = /이.*재/ "이재","이성재","이승재","이이재" // true
중괄호 = 특정 문자열 중에서 그 부분이 x회 ~ y회 반복되는지 확인.
regex = /b{3}/ or /b{3, }/ "bbb", "bbba" // true "bb" // false regex = /^b{1,3}$/ //알파벳 b가 1회에서 3회 반복되는지 확인. "bbb" // true regex = /^\d{3}$/ "111" // true
역슬래시 = 메타 캐릭터의 앞에 붙이면 해당 메타 캐릭터의 역할을 제거한다.
regex = /abc(역슬래시).def/ // 메타 캐릭터 .의 역할을 제거한다. "abc.def" // true
물음표 = 물음표 앞의 문자가 없거나 하나만 있는지 확인.
regex = /hell ?world/ "hell world", "hellworld" // true
\d+ = 하나 혹은 그 이상 연결된 숫자.
[1-9]\d* = 자연수 (처음에 1~9 사이의 숫자 나온 후 그 뒤에 0개 이상의 숫자 나옴)
\d+-?\d+-?\d+ = 021234567과 02-123-4567 모두 표시할 수 있어야 한다. '-?'는 ~가 있거나 없다라는 것을 표현한다.
\d+[ -]?\d+[ -]?\d+ = 010 1234 5678과 같이 공백이 포함된 전화번호도 찾아야 한다.
\d{2}[ -]?\d{3}[ -]?\d{4} = '\d{2}'는 숫자가 연속 두 번 나온다라는 것을 표현한다.
\d{2,3}[ -]?\d{3,4}[ -]?\d{4} = 021234567, 010 1234 5678 전화번호도 찾아야 하기에 \d{2,3}와 같이 숫자가 2~3자릿수라고 표현한다.
[abcde] = 알파벳 a,b,c,d,e만 고르고 싶을 경우 사용한다.