본문 바로가기
JavaScript

JavaScript - 정규식 Regular expression

by 새발개발JA 2022. 7. 29.
반응형

 

updated 06/28/23

오늘은 정규식의 날이었다

정규식이 나를 애먹였지만 덕분에 생동감있게 배웠다.

아래 내용은 내가 편하게 이해하려고 정리해놓은 규칙들이다. 서서히 늘려나갈 계획이다.

 

 

 


JavaScript - 정규식 Regular expression

 

💡 기본 규칙 

 

/ _____ /      일단 정규식은 요런 형식을 사용한다. 슬래시로 감싸진 형태이다.

 

/ _____ / g   전체 문자열을 몽땅 검색한다

 

/ _____ / i     대소문자를 구분하지 않는다

 

/ _____ / gi   전체 문자열 몽땅 검색 + 대소문자를 가리지 않는다

 

 

/ ^[0-9] /    여기서 ^ 는 시작을 의미한다. → 한마디로 0-9 인 숫자로 시작되는 문자를 의미한다.

 

/ [^0-9] /    괄호 안의 ^ 는 not 을 의미한다. → 한마디로 0-9 까지 숫자 제외한 나머지 문자들 

 

/ ^\d*[.]\d{2}$ /   여기서 $ 는 종료를 의미한다.

 

 

💡 그룹핑하기

- 대괄호 [ ]

대괄호는 범위를 의미한다. 

/ [a-z] /       [ ] 괄호안에 있는 애들은 그 범위 내의 문자 중 아무거나를 의미한다. a ~ z 사이의 문자들 

/ [abc] /       a, b, c중 하나를 찾음

/ [^abc] /    문자열도 마찬가지이다. a, b, c를 뺀 나머지  문자를 찾음

 

 

- 중괄호 { }

/ HEL{2}O /    중괄호의 숫자만큼 n번 반복 검색을 한다. (HELLO 로 L이 두번 들어간 단어에 매칭)

                       {2, 3} 이면 2 - 3 번만큼 반복 검색을 한다. (HELLO, HELLLO)

 

 

- 소괄호 ( )

소괄호는 그룹을 의미한다. 

 

/ (Hi | Hello) | (Bye) /   (Hi | Hello) 가 그룹1 이고 (Bye | GoodBye) 는 그룹2 이다. 

/ (?: Hi | Hello)          물음표(?:)를 덧붙이면 찾긴 하지만 그룹으로 기억하지는 않는다.

 

💡 단어 나타내기

대문자는 제외를 의미하는 것 같다,

 

/ \w /    알파벳이랑 숫자를 의미한다.  [a-zA-Z0-9] 요거랑 같은 의미 !

/ \W /   알파벳이나 숫자를 제외한 나머지 문자들 (참 쉽죠잉)

 

/ \d /  얘는 숫자를 의미한다. [0-9] 요거랑 같은 의미 !

/ \D /  얘는 숫자 제외한 나머지를 의미

 

/ ___? /   물음표는 얘 앞에 있는 문자가 없을수도 있을수도 있음을 의미한다 (optional)

/ ___* /   별표는 얘 앞에 있는 문자 갯수가 0 ~ 이상을 의미한다.

/ ___+ /   플러스는 1개 이상을 위미한다.  

 

/ \b__ /  얘는 단어 - 단어 사이 경계를 의미한다.

             \bHello 이면 Hello 로 시작하는단어를 찾고  Hello\b 이면 Hello로 끝나는 단어를 찾는다.

/ \B__ /  얘는 \b 의 반대!

/ \s / 공백을 의미

 

💡 역슬래쉬 어택 (excaping)


\ __  역슬래쉬 뒤에 따라오는 애는 문자 그대로 취급한다.

         ex)  \d는 숫자를 의미한다. 그런데 앞에 역슬래쉬가 붙어 \\d 면 그냥 JUST 알파벳 d 로 받아들인다.

 

 

💡 기호

? 없거나 있거나 ex) /gr?ay/g  → gray gry

* 없거나 있거나 많거나 ex) /gr*ay/g  → gray gry  graay  graaay

 

💡 정규식 관련 함수

주로 많이 사용해본 함수들 중심으로 정리해보았다.

 

 

 test() 

문자열이 정규 표현식을 만족하는지 판별하고, 그 여부를 true 또는 false로 반환한다.

var testString = "12안녕.34Test!5?67,8H9i0";	// 원래 문자열
var regex = /[^0-9]/g;				// 숫자가 아닌 문자열을 매칭하는 정규식
var result = regex.test(testString);		// 원래 문자열에서 숫자가 아닌 문자열이 있는지 확인
console.log(result);				// true

 

 

replace(문자열 or 정규식, "바꿀 문자열")

문자열에서 일치하는 부분을 탐색하고, 그 부분을 대체 문자열로 바꾼다.

var testString = "12안녕.34Test!5?67,8H9i0";	// 원래 문자열
var regex = /[^0-9]/g;				// 숫자가 아닌 문자열을 매칭하는 정규식
var result = testString.replace(regex, "");	// 원래 문자열에서 숫자가 아닌 모든 문자열을 빈 문자로 변경
console.log(result);				// 1234567890

 

 

 replaceAll(문자열 or 정규식, "바꿀 문자열") 

문자열에서 일치하는 부분을 모두 탐색하고, 모두 대체 문자열로 바꾼다.

var testString = "12안녕.34Test!5?67,8H9i0";	// 원래 문자열
var regex = /[^0-9]/g;				// 숫자가 아닌 문자열을 매칭하는 정규식
var result = testString.replaceAll(regex, "");	// 원래 문자열에서 숫자가 아닌 모든 문자열을 빈 문자로 변경
console.log(result);				// 1234567890

 

 

 match() 

정규식에 통과한 모든 문자열은 배열로 저장한다. 그래서 몇개가 있는지 확인도 가능하다.

var testString = "12안녕.34Test!5?67,8H9i0";	// 원래 문자열
var regex = /[^0-9]/g;				// 숫자가 아닌 문자열을 매칭하는 정규식
var result = testString.match(regex);	// 원래 문자열에서 숫자가 아닌 모든 문자열을 배열로 출력
console.log(result);				// ['안', '녕', '.', 'T', 'e', 's', 't', '!', '?', ',', 'H', 'i']

 

 

 

 

** 요거슨 내가 보려고 만든 정규식 예제들

 

JavaScript - 유용한 정규식 예제들

내가 보려고 만든 유용한 정규식 예제들 🤩 정규식은 사랑입니다 💝 (계속 업데이트 해서 채워나갈 예정) JavaScript - 유용한 정규식 예제들 URL 검사 const validURL = (url: string): boolean => { if (!url) { ret

devbirdfeet.tistory.com

 

 

규칙 참고 blog : 

 

정규표현식(Regular Expression, regex)

주어진 문자열에서 특정 규칙을 만족하는 모든 문자열을 찾아야하는 경우에는 자연스럽게 정규표현식을 떠올리게 됩니다. 그런데, 생각보다 정규표현식의 규칙을 매번 헷갈려해서 결국 원하는

blog.walkinpcm.com

 

 

반응형

댓글