본문 바로가기
javascript/javascript 고급문법

[javascript]정규표현식

by 남민섭 2022. 12. 23.
728x90
반응형

정규표현식 (regular expression)

  • 정규표현식 문자열에서 특정문자를 찾아내는 도구
  • 하나의 언어
  • 자바스크립트 뿐 아니라 다른 언어에서도 다양하게 활용됨
  • 문자열을 검색하고 대체하는데 사용하는 형식 언어패턴


정규표현식 문법


1. 그룹과 범위

문자 의미
|  또는 
() 그룹
[] 문자셋
[^] 부정문자셋, 괄호안의 문자가 아닐때

 

2.빈도수

문자 의미
? 0또는 1
* 0또는 1이상
+ 1이상
{n}  n번 반복
{min, } 최소
{min, max} 최소, 최대

 

3. 문자

문자 의미
. 어떤글자(줄바꿈 문자 제외)
\d 숫자
\D 숫자아님
\w 문자
\W 문자아님
\s 공백
\S 공백아님

 

4. 경계영역

문자 의미
\b 단어경계
\B 단어경계가 아님
^ 문장의 시작
$ 문장의 끝

 

5. 추가

문자 의미
g 검색범위를 전역으로 확장
i 대소문자를 구분하지 않음
gi 검색 범위를 전역으로 확대하여 대소문자를 구분하지 않음
m 여러줄을 동시에 매칭함

 

6. 자주사용하는 구문

내용 문자
숫자만 ^[0-9]$
영문자만 ^[a-zA-Z]$
한글만 ^[가-힣]$
영어 & 숫자만 ^[a-zA-Z0-9]$
E-Mail ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$
휴대폰 ^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$
일반전화 ^\d{2,3} - \d{3,4} - \d{4}$
주민등록번호 \d{6} - [1-4]\d{6}
IP 주소 ([0-9]{1,3}) . ([0-9]{1,3}) . ([0-9]{1,3}) . ([0-9]{1,3})
숫자 1000단위 콤마찍기 변수명.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","

 

replace()참고 주소

2022.12.11 - [javascript/javascript 내장객체] - [javascript]String 객체

toString()참고 주소

2022.12.13 - [javascript/javascript 내장객체] - [javascript]Number 객체

정규표현식 연습 참고사이트

https://regexr.com/5mhou 

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

 

regexr.com

 

 

자바스크립트를 활용한 정규표현식

 

1.정규표현식 객체 생성하기

1) 생성자 함수 방식

const pattern = new RegExp("abc");

 

2)리터럴 방식

const pattern = /abc/gm;

 

2.정규표현식 객체나 문자열이 사용하는 메소드

추출(해당패턴의 문자열만 추출)

테스트(해당패턴이 있는지 확인)

변환(해당패턴의 문자열을 다른 문자열로 변환)

 

1) exec()메소드

 패턴에 해당되는 문자열이 있으면 그 값을 배열로 반환

 

구문)

정규식.exec(문자열)

ex)

let pattern = /a/;
pattern.exec("abcdef");

 

결과)

 

2) test()메소드

패턴에 해당되는 문자열이 있으면 true 없으면 false를 리턴

 

구문)

정규식.test("문자열")

 

예시)

let pattern =/a/;
pattern.test("abcdef");

 

결과)

 

3) match()메소드

exec()비슷하다. 정규식에 해당하는 문자열을 배열로 반환

 

구문)

문자열.match(정규식)

 

예시)

let pattern = /a/
"abcdef".match(pattern)

// 검색 범위를 전역으로 바꿔주면 배열로 리턴해준다
let pattern = /a/g
"abcdef".match(pattern)

// a를 제외한 나머지 값을 배열로 리턴 받을려면 부정 문자셋인 [^]추가
let pattern = /[^a]/g
"abcdef".match(pattern)

//배열로 리턴받고 쪼개진 문자들을 합칠려면 +
let pattern = /[^a]+/g
"abcdef".match(pattern)

 

결과)

4) search()메소드

정규표현식에 해당되는 문자열이 있으면 index를 반환 없으면 -1을 반환

 

구문)

문자열.search(정규식)

 

let pattern = /a/
"dfefeadfdf".search(pattern);

 

결과)

 

5) replace()메소드

문자열에서 패턴에 해당하는 문자를 대체문자로 변경해서 리턴

 

구문)

문자열.replace(정규식, 대체문자)

 

예시)

let pattern = /a/
"abcdef".replace(pattern,"A");

 

결과)

 

6) split()메소드

여러가지 조건으로 문자열을 쪼개어 배열로 리턴

 

구문)

문자열.split(정규식)

 

예시)

let str = "Hello world, Man";
let pattern = / | ,/;
str.split(pattern);

 

결과)

 

6) startsWith()메소드

문자열이 특정 문자열로 시작하는지 확인한다, IE는 Edge부터 지원

 

구문)

문자열.startsWith(searchString, length);

 

  • searchString : 검색할 문자열로 필수 요소이다. 대소문자를 구분한다.
  • length : 문자열 중 어디까지 검색할지 정한다. 선택 요소로, 값이 없으면 전체 문자열을 대상으로 한다.

예시)

'abcde'.startsWith( 'a' );
//abcde가 a로 시작하는지 검사한다. a로 시작하므로 true를 반환한다.

'abcde'.startsWith( 'a', 1 )
//bcde가 a로 시작하는지 검사한다. a로 시작하지 않으므로 false를 반환한다.

'abcde'.startsWith( 'A' )
//abcde가 A로 시작하는지 검사한다. 대소문자를 구분하므로 false를 반환한다.

6) includes()메소드

문자열 포함 여부를 boolean으로 리턴

 

구문)

문자열.includes("문자열");

 

예시)

str1 = "abc";
str2 = "aabcc";

str2.includes(str1);

//true

 

**추가로 참고할거

대소문자 구별하지 않고 문자열 비교

'i' 는 위에  5번 추가  참고할 것

let str1 = "AbCdEfG"
let test1 = "aBc"

let str2 = "aaAA"
let test2 = "aaaaa"

/////////////////  match()  //////////////////////

let check = str1.match(new RegExp(test1, "i"))
//["AbC"] 

let check2 = str1.match(new RegExp(test1, "i"))
//null

/////////////////  serch()  //////////////////////

let check = str1.search(new RegExp(test1, "i"))
//0

let check2 = str1.search(new RegExp(test1, "i"))
//-1
728x90
반응형

'javascript > javascript 고급문법' 카테고리의 다른 글

[javascript] this키워드  (0) 2023.01.23
[javascript] Modules  (0) 2023.01.11
[javascript]구조분해할당과 spread,rest  (0) 2023.01.05
[javascript]BOM(Browser Object Model)  (0) 2022.12.14
[javascript] class  (0) 2022.11.30

댓글