티스토리 뷰

Language/Javascript

정규표현식

Seogineer 2021. 1. 26. 16:42

정규표현식(regular expression)

정규 표현식은 문자열에 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다.

자바스크립트에서 정규 표현식 또한 객체입니다.

 

사용 예

이메일, 주소, 전화번호 규칙 검증

textarea에 입력된 것 중 불필요한 입력값 추출

트랜스파일링

개발 도구에서의 문자열 치환

 

정규표현식 선언

1. 리터럴

let re = /abc/;

 

2. 생성자 함수

let re = new RegExp("abc");

 

메소드

1. match()

문자열이 정규식과 매치되는 부분을 검색

문법 : str.match(regexp)

결과 값 : 문자열이 정규식과 일치하면, 결과 정보를 담은 Array를 반환하고 아니면 null을 반환

ex) [ '32', index: 3, input: 'abc32zzz', groups: undefined ]

"a52b".match(/52/);

//결과
//[ '52', index: 1, input: 'a52b', groups: undefined ]

 

2. exec()

주어진 문자열에서 일치 탐색을 수행한 결과를 배열 혹은 null로 반환

문법 : regex.exec(str)

결과 값 : 정규 표현식이 일치하면, 배열을 반환하고, 정규 표현식 객체의 lastIndex 속성을 업데이트합니다. 실패하면 null을 반환하고 lastIndex를 0으로 설정합니다.

var re = /ab*c/;
re.exec("abc");

//결과
//[ 'abc', index: 0, input: 'abc', groups: undefined ]

 

3. test()

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

문법 : regex.test(str)

결과 값 : str 중 정규 표현식이 일치하는 부분이 있으면 true 아니면 false

var re = /ab*c/;
re.test("abc");

//결과
//true

 

소스코드

//문자열 안에 있는 두자리 숫자를 찾고 싶은 경우

let target = "abc32zzz";
let r = /\d\d/;
let result = target.match(r);
result[0];

// 결과
// 32
//우편번호
"123-123".match(/\d\d\d-\d\d\d/)[0];

"123-123".match(/\d{3}-\d{3}/)[0];

"12345".match(/\d{5}/)[0];
//or 연산
"a".match(/(a|b)/)[0];

"123-123".match(/\d{3}-\d{3}|\d{5}/)[0];
//4번째 자리까지 0-8까지 허용
"92405".match(/[0-8]\d{4}/)[0];
//앞 4글자는 0-4, 6-8 허용
//마지막 5번째 글자는 상관없음
"82409".match(/[0-46-8]\d{4}/)[0];
//전화번호
//앞자리 010, 011, 017, 018, 019 허용
//가운데 자릿수 3자리 또는 4자리
"010-021-0011".match(/01[01789]-\d{3,4}-\d{4}/)[0];

//011 -> 010으로 변경
var result = "011-021-0011".replace(/(\d{2})\d/, "$10");
console.log(result);
//이메일
let re = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i
re.test("abc@abc.com");

 

참조

developer.mozilla.org/ko/docs/Web/JavaScript/Guide/%EC%A0%95%EA%B7%9C%EC%8B%9D

www.boostcourse.org/web316/lecture/254360

www.boostcourse.org/web316/lecture/254361/

'Language > Javascript' 카테고리의 다른 글

생성자패턴과 prototype  (0) 2021.01.17
var, let, const  (0) 2021.01.03
버블링(Bubbling)과 Event delegation  (0) 2020.12.30
DOMContentLoaded 이벤트  (0) 2020.12.30
객체와 객체 탐색  (0) 2020.12.28
댓글
Total
Today
Yesterday
링크
Apple 2023 맥북 프로 14 M3, 스페이스 그레이, M3 8코어, 10코어 GPU, 512GB, 8GB, 한글