250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- SQL쿡북
- 클린코드
- aop
- DDD
- 이펙티브 자바
- vue.js
- 도메인 주도 개발 시작하기
- java
- 자바예외
- 자바
- 기술면접
- 인프런백기선
- jpa
- 알고리즘
- 이팩티브 자바
- 알고리즘분석
- 네트워크
- AWS
- 스프링부트와AWS로혼자구현하는웹서비스
- MariaDB
- react
- 인덱스
- 혼공SQL
- AWS RDS
- 자바스터디
- 이펙티브자바
- 자료구조
- CleanCode
- 인프런김영한
- mysql
Archives
- Today
- Total
기록이 힘이다.
[모던자바스크립트] RegExp 자주 사용하는 정규표현식 본문
728x90
현재 프로젝트를 진행하면서 정규표현식의 사용을 발견하여 관련 내용을 공부하던 중에 정리해본다. 모던 자바스크립트를 최근 읽고 있는데 많은 도움이 되고 있다.
특정 단어로 시작하는지 검사
// url 프로토콜 검사
const http = "http://example.com";
const https = "https://example.com";
const testUrl = "httpss://example.com";
const regExp = /^https?:\/\//;
console.log(regExp.test(http)); // true
console.log(regExp.test(https)); // true
console.log(regExp.test(testUrl)); // false
특정 단어로 끝나는지 검사
const fileName1 = "index.html";
const fileName2 = "index.js";
const regExp = /html$/;
console.log(regExp.test(fileName1)); // true
console.log(regExp.test(fileName2)); // false
숫자로만 이루워진 문자열인지 검사
const target = "12345";
const regExp = /^\d+$/;
console.log(regExp.test(target)); // true
메일 주소 형식에 맞는지 검사
const emails = ["email@email.com", "email#email.com", "email@email.hack", "em<sricpt>@email.com"];
const regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-z]{2,3}$/;
emails.forEach((email) => console.log(regExp.test(email)));
// email@email.com => true
// email#email.com => false
// email@email.hack => false
// em<sricpt>@email.com => false
인터넷 메시지 형식(internet message format) 규약인 RFC 5322에 맞는 정교한 패턴 매칭이 필요할 경우, 더욱 복잡한 패턴 사용이 필요
const regExp =
/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/;
핸드폰 번호 형식에 맞는지 검사
- 전화번호 or 핸드폰의 자리수와 형식은 맞아도, 말도 안되는 지번 ( 예를들어, 87-XXXX-XXX )은 필터링하는 방법이 필요할 듯
const phoneNumbers = ["010-1234-5678", "02-1234-5678", "032-123-4567", "02-123-4567", "010:1234:5678"];
phoneNumbers.forEach((phoneNumber) => {
console.log(/^\d{2,3}-\d{3,4}-\d{4}$/.test(phoneNumber));
});
// 010-1234-5678 => true
// 02-1234-5678 => true
// 032-123-4567 => true
// 02-123-4567 => true
// 010:1234:5678 => false
특수 문자 포함 여부 검사
const target1 = "abc<123";
console.log(/[^A-Za-z0-9]/gi.test(target1)); // true
// 특수 문자 확인 시 제거하기 ( accessor method, 원본 데이터 변경 X )
console.log(target1.replace(/[^A-Za-z0-9]/gi, "")); // abc123
console.log(target1); // true