프론트엔드 개발자 신상오
article thumbnail
Published 2022. 9. 11. 11:23
정규표현식 정리 Javascript

맨날 구글링하기 귀찮아서 포스팅 🎯
정규표현식 테스트 사이트 참고하면서 작성

📚 정규표현식(Regular Expression) 

규칙을 슬래시 '/ ' 로 감싸 사용
컴퓨터에게 '/ ' 사이에 있는 문자열 찾고싶다고 명령 내리는 것

📗 내장 RegExp 객체 메소드 

exec

execution의 줄임말로 원하는 정보 뽑아내고자 할 때 사용
찾고자하는 문자열에 정보가 있다면 배열로 반환, 없으면 null로 반환

let reg = /c/;  
reg.exec('code'); // expect \[ 'c', index: 0, input: 'code', groups: undefined \]  

test

찾고자 하는 문자열이 대상에 있는지 boolean 으로 리턴

let reg = /c/;  
reg.test('code'); // true  
reg.test('asd'); // false  

📗 String 객체 메소드 

match

RegExp.exec()와 비슷함 문법만 조금 다르다

let reg = /c/;  
let str = 'code';  
str.match(reg); // \[ 'c', index: 0, input: 'code', groups: undefined \]  

replace

검색 후 바꾸기 수행
첫 번째 인자로 정규표현식, 두 번째 인자로 치환하려는 문자열 받음

let reg = /c/;  
let str = 'code'  
str.replace(reg, 'C')  

✅ 아무 옵션 넣지 않으면 첫번째로 매치된 문자열만 변환됨 g 옵션 주면 전부 다 변경 가능


split

주어진 인자 구분자로 문자열을 문자열로 나누고 그 결과를 배열로 반환

let phone = '010-1234-5678';  
phone.split('-'); // \["010", "1234", "5678"\]  

search

가장 처음 매칭되는 문자열의 위치 반환 (대소문자 구분하니 주의)
없으면 -1 반환

"JavaScript".search(/script/); // -1 대소문자를 구분합니다  
"JavaScript".search(/Script/); // 4  

📗 flag 옵션

1. i : 대소문자 구분하지 않도록
2. g : 검색된 모든 결과 리턴
3. m : 다중행을 검색
m 옵션은 애매해서 예시 하나 추가

let str = `1st : cool 2nd : code 3rd : edoc`;  
str.match(/c/gm)  
// 3개의 행을 검색하여 모든 c 를 반환합니다.  
// \['c', 'c'\]  
str.match(/c/m)  
// m은 다중행을 검색하게 해 주지만, g 를 빼고 검색하면 검색 대상을 찾는 순간 검색을 멈추기 때문에  
// 첫 행의 \['c'\] 만 리턴합니다.  

📗 정규식 패턴

1. ^ : 찾는 문자로 시작하는 단어를 찾는 기호
2. $ : 찾는 문자로 끝나는 단어를 찾는 기호