자주 사용하는 정규식 표현 정리

송은·2023년 8월 9일
2
post-thumbnail

패턴의 의미

패턴의미
g전역 매칭
i대소문자 무시
m여러 줄 매칭
\ 다음에 오는 문자를 이스케이프 처리
*0회 이상 반복
+1회 이상 반복
?0 또는 1개의 문자 매칭
.정확히 1개 문자 매칭
\b단어의 경계
\B이를 제외한 모든 문자 매칭
\d숫자 0~9
\D숫자가 아닌 문자 = [^0-9]
\w알파벳, 숫자, 언더바 = [A-Za-z0-9_]
\Ww의 반대 = [^A-Za-z0-9_]
\s공백문자(스페이스, 탭, 줄바꿈)
\S공백문자 이외의 문자 = [^\s]
\t수평탭
\n줄바꿈 코드
{숫자}반복 횟수
^x시작문자 x
x$종료문자 x
()괄호로 묶이니 패턴은 매칭된 다음,그 부분을 기억한다
x문자x
xyz문자 xyz
[xyz]x,y,z 중 하나의 문자
[a-z]a~z 중 하나의 문자
[^xyz]x,y,z가 아닌 하나의 문자
[^a-z]a~z가 아닌 하나의 문자
abcxyz
.하나의 문자
x*0개 이상 계속되는 x

자주 사용하는 정규식

🔥 정규식을 파악하는데 도움 되는 사이트!

문자

// 영문자 대소문자, 숫자로만 구성
const reg = /[a-zA-Z0-9]/;
// 공백없는 숫자와 대소문자
const reg = /^[a-zA-Z0-9]*$/
// 공백포함 숫자와 대소문자
const reg = /^[a-zA-Z0-9 ]*$/
// 한글포함 특수문자와 공백
const reg = /[^?a-zA-Z0-9/]/;
// 한글, 대문자, 특수문자, 공백 포함
const reg = /^(?=.*[ㄱ-ㅎㅏ-ㅣ가-힣A-Z!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?])/;
// 한글제외 특수문자와 공백
const reg = /[^-가-?a-zA-Z0-9/ ]/;
// 특수문자
const reg = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/g;
// 특수문자와 공백
const reg = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"\s]/g;
// 숫자인지 체크
const reg = ^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$;
const reg - /[0-9]/g;
// 모든 공백 체크
const reg = /\s/g;

이메일

// 일반 이메일 주소 체크
const reg = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
// 정밀한 이메일 주소 체크
const reg = /(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;

비밀번호

// 최소 8자리 이상 영문 대소문자, 숫자, 특수문자가 각각 1개 이상
const reg = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$/;
// 최소 8자리 이상 숫자, 특수문자가 1개 이상 포함
const reg = /^(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$/;

신용카드

// 영문자(소문자), 숫자, "-", "_"로만 구성된 길이 2~10자리 사이의 문자열
const reg = /^[a-z0-9_-]{2,10}$/
// 19자리 숫자와 "-"로 구성 (신용카드 번호)
const reg = /^[0-9-]{19}$/;
// 숫자로 구성된 4자리-4자리-4자리-4자리 유형 체크 (신용카드 번호)
const reg = /^[0-9]{4}[-\s\.]?[0-9]{4}[-\s\.]?[0-9]{4}[-\s\.]?[0-9]{4}$/

번호

// 3자리-3~4자리-4자리 유형 (문자 아무거나 가능)
const reg = /^\d[3]-\d[3,4]-\d[4]$/;
// 일반 전화번호
const reg = /^\d{2,3}-\d{3,4}-\d{4}$/;
// 휴대폰 번호
const reg = /^\d{3}-\d{3,4}-\d{4}$/;
// 주민등록번호 체크
const reg = /^[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[@]{1}[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[.]{1}[A-Za-z]{1,5}$/;

시간

// 년월일 (yyyy-mm-dd) 체크
const reg = /^(19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])$/;

개발

// 웹사이트 링크인지 체크
const reg = <a\s+(?:[^>]*)href=\"((?:https:\/\/|http:\/\/)(?:.*?))">(?:.*?)<\/a>;
// URL 체크 (프로토콜 포함, ex-http://naver.com)
const reg = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/;
// URL 체크 (프로토콜 옵션, ex-http://naver.com, naver.com)
const reg = /(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/;
// IP 주소 (IPv4)
const reg = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
// 맥어드레스 체크 
const reg = /^[a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5}$/;
// HTML 태그인지 체크
const reg = /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/;
// 하이퍼링크 체크
const reg = /(?!<a\sname=\"([\w\s\d\-\.\#]+)\"><\/a>)<a\sname=\"([\w\s\d\-\.\#]+)\">(.*?)<\/a>/;

정규표현식 메서드

test

문자열이 정규식에 일치하는지 Boolean 값을 반환한다.

정규식.test(문자열)

match

일치하는 문자열을 배열(Array)로 반환한다.

문자열.match(정규식)

replace

일치하는 문자열을 새로운 문자열로 대체하고, 대체된 결과를 문자열(String)로 반환한다.

문자열.replace(정규식, 대체문자)

출처

profile
개발자

2개의 댓글

comment-user-thumbnail
2023년 8월 9일

개발자로서 배울 점이 많은 글이었습니다. 감사합니다.

답글 달기
comment-user-thumbnail
2024년 7월 24일

좋은 사이트 알려주셔서 감사합니다! 잘보고 갑니다

답글 달기