본문 바로가기

프론트앤드 수업

[정규표현식] 정규표현식의 기초

728x90

정규표현식
문자열에서 특정 문자조합을 찾기위한 패턴
정규표현식을 연습할 수 있는 사이트 :  https://regexr.com/5mhou

 

RegExr: Learn, Build, & Test RegEx

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

regexr.com

/패턴/gm

1. 그룹
| 또는 (2개이상 선택)
() 그룹 (ga|ry) ga나 ry를 찾아줌
[] 문자셋 [a-z] a부터 z까지
[^] 부정문자셋 - [] 안에속한 문자가 아닐때

2. 범위
^ - 문장의 앞에서 찾아줌 [ ] 안에 넣으면 부정문자가됌
$ - 문장의 뒤에서 찾아줌
\b 단어 경계
\B 단어 경계가 아님

2. 수량
? 없거나 있거나 / 1개만 선택
* 없거나 있거나 많거나 /많아도 선택
+ 하나 또는 많이 (1개가 많이 선택됨)
{n} n번 반복
{min,} 최소수량 , 을붙이면 최소 2개이상을 원할시 가능
{max, max} 최소, 그리고 최대 2,5를입력하면 2~5개까지만 포함

4. 텍스트
\ 특수문자가 아닌 문자
. 어떤 글자
\d 숫자
\D 숫자가 아닌것
\w 문자 //숫자도 포함
\W 문자가 아닌것 // 특수문자
\s 공백
\S 공백이 아닌것

문자열.replace(정규식, 대체문자)
문자열.match(정규식)  // array 반환 
문자열.search(정규식) // index 반환 
문자열.text(문자열)    // boolean 반환 있다면 true

 

간단한 예제

    //패턴을 만들어서 특정 문자열이 해당 패턴이 맞는지 체크
        const regex = /\d{3}-\d{4}-\d{4}/;
        console.log(regex.test('010-1234-1234')) // true
        console.log(regex.test('02-1234-1234')) // false

        // 문자들 중에서 전화번호만 반환
        const text = '안녕하세여 제 전화번호는 010-1234-1234입니다.'
        console.log(text.match(/\d{3}-\d{4}-\d{4}/))  // match는 배열로 반환해서 만들어준다.

 

예제 2

  let str ='abccc'
        console.log(str.match(/c*/g)) //  '', '', 'ccc', '' 
        let str2 = '123abc';
        console.log(str2.match(/(\d+)(\w)/)) // '123a' , '123', 'a' ( ) 안에잇어서 그룹으로 묶어짐 \d+ =123 \w = a
두개를 합친 123a를 배열의 첫번째에 넣고 \d+ 값인 123이 두번째 \w값인 a가 3번째로 들어간다.

        str = str.replace(/ab/,"h1") // replace는 찾은 문자열을 변환해서 문자로 출력해준다. h1ccc 출력
        console.log(str)
728x90
댓글