//리터럴 방식
let reg1 = /a/;
//생성자 방식
let reg2 = new RegExp('a');
let str = "hello JavaScript Program...";
//search : str에서 시작하는 인덱스 번호 출력
let regExp_search=str.search(/JavaScript/);
console.log(regExp_search); // 6 출력된다.
// replace 첫번째 매개변수로 전달한 문자열을 찾아서
// 두번째 매개변수로 전달한 문자열로 바꿔준다.
let regExp_replace = str.replace(/JavaScript/, 'CSS');
console.log(regExp_replace); // hello CSS Program... 출력된다.
// test
// 정규식 패턴에 대한 문자열 검색 반환값은 true false로 반환한다.
let reg3 = /JavaScript/;
let reg4 = /JavaScript2/;
console.log(reg3.test(str)); // JavaScript 있기때문에 true 출력된다.
console.log(reg4.test(str)); // JavaScript2 없기때문에 false 출력된다.
let str2 = 'The best program is \n JavaScript..'
// i : 대소문자를 구분안하고 비교할수 있다.
let temp1= /javascript/i;
// match : 해당 문자열을 찾고 배열의 형태로 반환해준다.
// match 문자열을 찾지 못하면 null
console.log(str2.match(temp1)); //temp1 의 S가 소문자 s지만 플래그 i는 대소문자 구분안하고 비교하기 때문에 비교가 된다.
// g : 전체문자열을 정규식과 비교한다. 첫번쨰로 일치한 문자열이 있으면 비교를 중단한다.
let temp2 = /Javascript/g;
console.log(str2.match(temp2)); // ['JavaScript'] 라고 출력된다.
// m : 줄이 다른 문자열을 비교한다.
let temp3 = /JavaScript/m;
console.log(str2.match(temp3));
[abc] : 대괄호 안에 있는 문자들을 찾는다.
[0-9] : 대괄호 사이의 숫자를 찾는다.
[x|y] : 문자중에서 "|" 분리된 문자중 하나를 찾는다.
let str3 = "The best program is JavaScript and HTML234..."
let temp5 = /[A-K]/ig;
console.log(str3.match(temp5));
//['e', 'b', 'e', 'a', 'a', 'a', 'c', 'a', 'd'] 가 출력된다.
let temp6 = /pr|x|an/ig;
console.log(str3.match(temp6));
//['pr', 'an'] 가 출력된다. x는 없으니 출력이 안된다.
/*
^문자 : 정규식에서 시작문자를 찾는다. ^뒤에 있는문자로 시작하는 문자를 찾는다.
문자$ : 정규식에서 끝나는 문자를 찾는다. $앞에 문자를 끝나느 문자열을 찾는다.
\w : 모든 문자를 찾는다. 속하는 모든 문자를 찾는다.
\W : 알파벳 대소문자, 숫자 _문자를 제외한 모든 문자를 찾는다.
\d : 숫자를 찾는다
\D : 숫자를 제외하고 찾는것( 모든 문자를 찾는다);
\s : 공백문자를 찾는다.
\S : 공백문자를 제외하고 찾는다.
*/
// 문자열 자체가 T로 시작하는지 확인을 하고 T가 맞으니까 맞는 문자열 반환
let temp7 = /^T/ig;
console.log(str3.match(temp7 // ['T'] 가 출력된다.
let temp8 = /\d/ig;
console.log(str3.match(temp8)); // ['2', '3', '4'] 가 출력된다.