티스토리 뷰
정규표현식(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
'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 |