javascript: 정규표현식

2021. 1. 11. 09:56프론트엔드/JavaScript

반응형

 

 

정규표현식 Regular Expression

Regex, Regexp 등으로 불림.

문자열을 검색하고 대체하는 형식 패턴.

 

역할

  1. search
  2. replace
  3. extract

생성하기

1. 리터럴 방식

 var 패턴이름 = /표현식/플래그/;

 

2. 객체 생성 방식

 var 패턴이름 = new RegExp("표현식","플래그");

 

Method

주로 exec와 test를 많이 사용.

exec 문자열 찾기, 정보를 가진 배열 반환

test 문자열 검사, true or false 반환

		//1. 리터럴 방식
        var pattern1=/a/;
        
        //2. 객체 생성 방식
        var pattern2=new RegExp("a");
        var pattern3=/k/i; //i: 플래그, 대소문자 구분 없음
        
        //3. 문자열 변수
        var str1="hi, javascript!!!";
        var str2="bcefs";
        var str3="King of";
        
        // method : exec
        console.log(pattern1.exec(str1));
        // 결과 : ["a", index: 5, input: "hi, javascript!!!", groups: undefined]
        console.log(pattern2.exec(str2)); // null
        
        // method : test
        console.log(pattern1.test(str1)); // true
        console.log(pattern1.test(str2)); // false
        
        //pattern3 str3
        console.log(pattern3.test(str3));
        

 

플래그

i: 대소문자 구별하지 않음

var xi = /a/;
console.log("Abcde".match(xi)); // null 
var oi = /a/i;
console.log("Abcde".match(oi)); // ["A"];

 

 

정규식 메타문자

 

 

 

간단한 정규 표현식

var re = /a/         --a 가 있는 문자열
var re = /a/i        --a 가 있는 문자열, 대소문자 구분 안함
var re = /apple/    -- apple가 있는 문자열
var re = /[a-z]/    -- a~z 사이의 모든 문자
var re = /[a-zA-Z0-9]/    -- a~z, A~Z 0~9 사이의 모든 문자
var re = /[a-z]|[0-9]/  -- a~z 혹은 0~9사이의 문자
var re = /a|b|c/   --  a 혹은 b 혹은 c인 문자
var re = /[^a-z]/  -- a~z까지의 문자가 아닌 문자("^" 부정)
var re = /^[a-z]/  -- 문자의 처음이 a~z로 시작되는 문장
var re = /[a-z]$/  -- 문자가 a~z로 끝남
        //영문자
        var p1=/[a-z]/;
        
        //영문자x
        var p2=/[^a-z]/;
        
        //숫자
        var p3=/[0-9]/;
        
        //영문자로 시작
        var p4=/^[a-z]/;
        
        //영문자로 끝
        var p5=/[a-z]$/;
        
        var str1="javascript !!!";
        var str2="REGEXP ES6";
        var str3="010-1111-2222";
        
        console.log(p1.test(str1)); 
        console.log(p1.test(str2)); 
        console.log(p1.test(str3)); 
        
        console.log(p3.test(str3)); 
        
        console.log(p4.test(str2));
        console.log(p5.test(str2));

 

자주 사용되는 패턴

숫자만 : ^[0-9]*$
영문자만 : ^[a-zA-Z]*$
한글만 : ^[가-힣]*$
영어 & 숫자만 : ^[a-zA-Z0-9]*$

 

 

정규식 실습

주민등록번호, 전화번호, 핸드폰번호, 이메일주소

        //주민등록번호 체크
        var p1 = /\d{6}-[1-4]\d{6}/;
        var num1 = prompt("주민등록번호를 입력하세요", "123456-1234567");
        console.log(p1.test(num1));

        //전화번호 체크하기
        //첫글자가 2,3글자/ 중간글자 3,4/ 마지막 4
        var tel = /^\d{2,3}-?\d{3,4}-?\d{4}$/;
        var tel2 = prompt("집 전화번호를 입력하세요", "02-111-1111");
        console.log(tel.test(tel2));

        //핸드폰번호 체크하기
        var phone = /^01([0|1|6|7|8|9])-?\d{3,4}-?\d{4}$/;
        var phone2 = prompt("핸드폰 번호를 입력하세요", "010-1234-1234");
        console.log(phone.test(phone2));

        //이메일 체크
        var email = /^[a-z0-9]([-_.]?[a-z0-9])*@[a-z0-9]([-_.]?[a-z0-9])*.[a-z]{2,3}$/i;
        var email2 = prompt("메일주소를 입력하세요", "");
        console.log(email.test(email2));
반응형