Javascript
정규 표현식과 메타문자 총정리
Rachel_
2022. 4. 21. 18:19
정규표현식
(REGEX/REGEXP : rugular expresstion)
: 특정 패턴을 가진 문자열을 찾거나 또는 찾아서 변경(치환)할 때 사용되는 형식 언어.
정규표현식을 이용하면 문자열에 대해 특정 패턴 조건 검사 시 또는 치환 시 복잡한 조건을 제시할 필요 없이 간단하게 처리 가능해진다.
필요성
: 찾으려는 문자열 또는 바꾸려는 문자열의 규칙이 복잡하다면, 정규표현식을 사용하였을 때 코드가 매우 간결해진다.
정규표현식 작성 방법
종류 | 메소드명 (정규식:regExp /문자열:str) |
반환형 | 결과 |
정규표현식에서 제공하는 메소드 (정규식.메소드명(문자열) 형태 |
regExp.test(str); | boolean | 문자열 안 정규식 값의 유무 |
regExp.exec(str); | string | 문자열에서 정규식 값과 일치하는 값의 처음 매칭된 문자열 반환. 없을 경우 null 반환 | |
String 객체에서 제공하는 메소드 (문자열.메소드명(정규식) 형태 |
str.match(regExp); | String | 문자열에서 정규식 값과 일치하는 값을 찾아 반환 |
str.search(regExp); | int | 문자열에서 정규식 값과 일치하는 값의 인덱스 반환. 없을 경우 -1로 반환 | |
str.replace(regExp, "바꿀값"); | String | 문자열에서 정규식 값과 일치하는 첫번쨰 부분의 문자열을 바꿀값 으로 변환 | |
str.split(regExp); | String | 정규식에서 지정된 값을 구분자로 문자열을 쪼갬. |
메타문자
: 본래 그 문자가 가진 의미가 아니라 특별한 용도로 사용되는 문자들을 의미한다.
==> . ^ $ * + ? { } [ ] \ | ( ) ;
메타문자의 작성은 regExp = /메타문자/ 의 형태를 가져간다.
메타문자의 종류 | 특징 | 결과 |
/ ^[]or문자or... / | ~으로 시작 | [] 안의 값 or ^바로 뒤에 사용된 문자로 시작되는 값을 찾는 정규표현식이다. |
/ [^~] / | 아닌 것(부정) | ^가 문자클래스 안으로 들어가게 되면 부정의 의미를 띈다. [^0~9] 의 의미는 0~9가 아닌 값을 찾는 정규표현식이 된다. |
/ a.b / | 1개라도 존재 | . 의 메타문자는 a와 b 사이에 그 어떤 문자라도 1개 이상 존재한다는 정규표현식을 의미한다. aab, a0b 는 따라서 true 가 나온다. 하지만 abc 는 a와 b사이에 문자가 없기 때문에 false 이다. |
/ abc*d / | 0번 이상 반복 | * 바로 앞 문자의 반복을 의미한다. 반복은 0번부터 가능하다. abd abcd abccd abcccd 모두 true 값이 나온다. |
/ abc+d / | 1번 이상 반복 | + 바로 앞 문자의 반복을 의미한다. 반복은 1번 이상부터 가능하다. abd 는 따라서 false 이며, abcd abccd abcccd 는 true 값이 나온다. |
/ {m} / | str.length = m | |
/ {m, } / | str.length >= m | |
/ {, n} / | str.length <= n | |
/ {m, n} / | str.length >= m && str.length <= n |
|
/ ? / | 0 또는 1 |
- \d : 숫자와 매치, [0-9]와 동일한 표현식이다.
- \D : 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다.
- \s : whitespace 문자와 매치, [ \t\n\r\f\v]와 동일한 표현식이다. 맨 앞의 빈 칸은 공백문자(space)를 의미한다.
- \S : whitespace 문자가 아닌 것과 매치, [^ \t\n\r\f\v]와 동일한 표현식이다.
- \w : 문자+숫자(alphanumeric)와 매치, [a-zA-Z0-9_]와 동일한 표현식이다.
- \W : 문자+숫자(alphanumberic)가 아닌 문자와 매치, [^a-zA-Z0-9_]와 동일한 표현식이다.