개발/javascript

[javascript] 자주 사용하는 정규 표현식 (Regular Expression) 정리

가시죠 2021. 1. 18. 21:31
반응형

정규표현식 패턴

/패턴/

대표적인 패턴 의미

패턴 의미
x 문자 x
xyz 문자 xyz
[xyz] x,y,z 중 하나의 문자
[a-z] a~z중 하나의 문자
[^xyz] x,y,z 가 아닌 하나의 문자
[^a-z] a~z가 아닌 하나의 문자
abc|xyz 문자열 abc 또는 xyz
{숫자} 반복 횟수
^x 시작문자 x
x$ 종료문자 x
. 하나의 문자
x* 0개이상 계속되는 x
\ 다음에 오는 문자를 이스케이프 처리
\d 숫자 0~9
\D 숫자가 아닌 문자 = [^0-9]
\w 영문, 숫자, 언더바 = [A-Za-z0-9_]
\s 공백문자(스페이스, 탭, 줄바꿈 등)
\S 공백문자 이외의 문자 = [^\s]
\t 수평탭
\n 줄바꿈 코드

 

정규표현식 테스트 예제

//======================
// 1. 콘솔로 간단히 확인
//======================
// 정규표현식 선언
var myRe = /^[a-z0-9_-]{2,10}$/;

// 테스트할 문자열 선언
var inputText = 'abcd-_1234';

// 정규 표현식으로 체크하여 콘솔에 출력
// 정규 표현식에 맞다면 true 틀리면 false를 리턴
console.log(myRe.test(inputText);

//======================
// 2. 함수로 만들어 사용
//======================
function checkValidSomeThing(param) {
  const myRe = /^[a-z0-9_-]{2,10}$/;
  return myre.test(param);
}

checkValidSomeThing('abcd-_1234');  // true
checkValidSomeThing('한글');  // false
checkValidSomeThing('1');  // false

자주 사용하는 정규표현식

1. 공백없는 숫자와 대소문자

/^[a-zA-Z0-9]*$/

 

2. 공백포함 숫자와 대소문자

/^[a-zA-Z0-9 ]*$/

 

3. 한글포함 특수문자와 공백

/[^?a-zA-Z0-9/]/

 

4. 한글제외 특수문자와 공백

/[^-가-?a-zA-Z0-9/ ]/

 

5. 영문자, 소문자, 숫자, "-","_" 로만 구성된 길이 2~10자리 사이의 문자열

/^[a-z0-9_-]{2,10}$/

 

6. 19자리 숫자와 "-"로 구성된 신용카드 번호

/^[0-9-]{19}$/

 

7. 숫자로 구성된 4자리-4자리-4자리-4자리 유형 체크 (ex. 신용카드 번호)

/^[0-9]{4}[-\s\.]?[0-9]{4}[-\s\.]?[0-9]{4}[-\s\.]?[0-9]{4}$/

 

8. 영문자 대소문자, 숫자로만 구성

/[a-zA-Z0-9]/

 

9. 3자리-3~4자리-4자리(사이에 문자 아무거나 가능)

/^\d[3]-\d[3,4]-\d[4]$/

 

10. 일반 전화번호

/^\d{2,3}-\d{3,4}-\d{4}$/;

 

 

11. 휴대폰 번호

/^\d{3}-\d{3,4}-\d{4}$/;

 

12. 맥어드레스 체크

/^[a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5}$/

 

13. IP 주소 (IPv4)

/^(?:(?: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]?)$/

 

14. 일반 이메일 주소 체크

/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/

 

15. 정밀한 이메일 주소 체크

/(([^<>()\[\]\\.,;:\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,}))/

 

16. 최소 8자리 이상 영문 대소문자, 숫자, 특수문자가 각각 1개 이상 (패스워드 체크시 활용)

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$/

 

17. 최소 8자리 이상 숫자, 특수문자가 각각 1개 이상 (패스워드 체크시 활용)

/^(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$/

 

18. URL 체크 (프로토콜 포함, ex) http://www.naver.com )

/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/ 

 

19. URL 체크 (프로토콜 옵션, ex) http://www.naver.com, www.naver.com)  

/(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/

 

20. HTML 태그인지 체크

/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/

 

21. 하이퍼링크 체크

/(?!<a\sname=\"([\w\s\d\-\.\#]+)\"><\/a>)<a\sname=\"([\w\s\d\-\.\#]+)\">(.*?)<\/a>/

 

22. 숫자인지 체크

^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$

 

23. 웹사이트 링크인지 체크

<a\s+(?:[^>]*)href=\"((?:https:\/\/|http:\/\/)(?:.*?))">(?:.*?)<\/a>

 

24. 년월일 (yyyy-mm-dd) 체크

/^(19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])$/

 

25. 주민등록번호 체크

/^[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[@]{1}[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[.]{1}[A-Za-z]{1,5}$/

 

반응형