정규표현식은 문자열에서 특정 내용을 찾거나 발췌할 때 사용한다.
복잡한 코드를 대신하여 정규표현식을 사용하면 간단하지만 가독성은 좋지 않다.
/*
RegExp.prototype.exec
RegExp.prototype.test
String.prototype.match
String.prototype.replace
String.prototype.search
String.prototype.split
*/
플래그는 옵션이므로 선택적으로 사용한다.
원하는 조건대로 사용하면 된다.
i (ignore case) : 대소문자 구분 없이 검색
g (global) : 문자열 전체 검색 (중복된 경우도 검색)
m (multiple line) : 문자열 행이 바껴도 검색
let targetStr = 'Is this all there is?';
let regexr = /is/; //'is'를 소문자인경우 1개만 찾음
targetStr.match(regexr);
regexr = /is/ig; //소대문자 신경안쓰고 여러개 찾음
targetStr.match(regexr); //3개 모두 찾음
검색하고 싶은 문자열을 따옴표 제외하고 입력한다.
// **. 은 임의의 문자를 의미한다.**
const regexr = /.../; //이는 임의의 문자 3개를 의미함.
**// + 는 앞의 패턴을 반복하고 싶으면 붙여준다.**
const targetStr = 'AA AAA BB Aa Bb';
const regexr = /A+/g;
targetStr.match(regexr);
//[ 'AA', 'AAA', 'A' ]
// | 는 or을 의미함
const targetStr = 'AA BB Aa Bb';
const regexr = /A|B/g;
targetStr.match(regexr);
//[ 'A', 'A', 'B', 'B', 'A', 'B' ]
// []안의 문자는 or로 동작한다.
const str = 'AA BB Aa Bb';
const regexr = /[AB]+/g; //A 니 B 반복되는 것 다 찾기
str.match(regexr); //[ 'AA', 'BB', 'A', 'B' ]
//범위지정 시 에는 [] 안에 -를 써준다.
const str = 'AA BB ZZ Aa Bb';
const regexr = /[A-Z]+/g;
str.match(regexr);
**// \d 는 숫자를 의미, \D 는 숫자가 아닌 문자열 의미**
const targetStr = 'AA BB Aa Bb 24,000';
// '0' ~ '9' 또는 ','가 한번 이상 반복되는 문자열을 반복 검색
let regexr = /[\d,]+/g;
console.log(targetStr.match(regexr)); // [ '24,000' ]
// '0' ~ '9'가 아닌 문자(숫자가 아닌 문자) 또는 ','가 한번 이상 반복되는 문자열을 반복 검색
regexr = /[\D,]+/g;
console.log(targetStr.match(regexr)); // [ 'AA BB Aa Bb ', ',' ]
**//\w는 알파벳과 숫자를 의미, \W는 알파벳과 숫자를 제외한 문자를 의미**
const targetStr = 'AA BB Aa Bb 24,000';
// 알파벳과 숫자 또는 ','가 한번 이상 반복되는 문자열을 반복 검색
let regexr = /[\w,]+/g;
console.log(targetStr.match(regexr)); // [ 'AA', 'BB', 'Aa', 'Bb', '24,000' ]
// 알파벳과 숫자가 아닌 문자 또는 ','가 한번 이상 반복되는 문자열을 반복 검색
regexr = /[\W,]+/g;
console.log(targetStr.match(regexr)); // [ ' ', ' ', ' ', ' ', ',' ]
// ^ : 문자열의 처음을 의미
//http 로 시작하는지 검사
const url = "http://naver.com";
const regexr = /^http/;
regexr.test(url);
// $ : 문자열의 끝을 검사
//html로 끝나는지 검사
const str = 'index.html';
const regexr = /html$/;
regexr.test(str);
//문자열이 숫자로만 이루어졌는지 검사
const str = '12234434';
const regexr = /^\d+$/;
regexr.test(str);
//문자열의 첫 시작이 스페이스로 시작하는지 검사
//\s : 여러 가지 공백 문자 (스페이스, 탭 등) => [\t\r\n\v\f]
const str = ' hi!';
const regexr = /^\s+/;
regexr.test(str);
//유효한 아이디인지 검사
// {4,10} : 4 ~ 10자리
const id = 'abc123';
const regexr = /^[A-Za-z0-9]{4,10}$/;