JAVA && Spring

[정규식] 자주 쓰이는 정규식 모음(+비밀번호 스크립트 추가)

도미노& 2017. 3. 24. 20:33

<내가 작성한 정규식>


1
2
3
4
5
6
7
8
9
// id 체크 정규식 : 숫자, 영문만 입력 가능
    var regExpId = /^[0-9a-z]+$/;
 
// 비밀번호 규칙 정규식
// : 숫자, 특문 각 1회 이상, 영문은 2개 이상 사용하여 8자리 이상 입력
    var regExpPw = /(?=.*\d{1,50})(?=.*[~`!@#$%\^&*()-+=]{1,50})(?=.*[a-zA-Z]{2,50}).{8,50}$/;
    
// 이메일주소 형식 체크 정규식
    var regExpEm = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
cs




아래는 자주 쓰이는 정규식 모음


출처 : http://seongilman.tistory.com/186


1.

var passwordRules = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,16}$/;


var password = 'password1';

console.log(passwordRules .test(password));



2.

function checkPassword(id,password){

if(!/^[a-zA-Z0-9]{10,15}$/.test(password)){

alert('숫자와 영문자 조합으로 10~15자리를 사용해야 합니다.');

return false;

}


var checkNumber = password.search(/[0-9]/g);

var checkEnglish = password.search(/[a-z]/ig);


if(checkNumber <0 || checkEnglish <0){

alert("숫자와 영문자를 혼용하여야 합니다.");

return false;

}

if(/(\w)\1\1\1/.test(password)){

alert('444같은 문자를 4번 이상 사용하실 수 없습니다.');

return false;

}

if(password.search(id) > -1){

alert("비밀번호에 아이디가 포함되었습니다.");

return false;

}

return true;

}



3. 자주 쓰이는 정규식 문법

1. 암호:

조건1. 6~20 영문 대소문자

조건2. 최소 1개의 숫자 혹은 특수 문자를 포함해야 함

/^(?=.*[a-zA-Z])((?=.*\d)|(?=.*\W)).{6,20}$/


2. 전자우편 주소:

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


3. URL:

/^(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/


4. HTML 태그 – HTML tags:

/\<(/?[^\>]+)\>/


5. 전화 번호 – 예, 123-123-2344 혹은 123-1234-1234:

/(\d{3}).*(\d{3}).*(\d{4})/


6. 날짜 – 예, 3/28/2007 혹은 3/28/07:

/^\d{1,2}\/\d{1,2}\/\d{2,4}$/


7.  jpg, gif 또는 png 확장자를 가진 그림 파일명:

/([^\s]+(?=\.(jpg|gif|png))\.\2)/


8. 1부터 50 사이의 번호 – 1과 50 포함:

/^[1-9]{1}$|^[1-4]{1}[0-9]{1}$|^50$/


9. 16 진수로 된 색깔 번호:

/#?([A-Fa-f0-9]){3}(([A-Fa-f0-9]){3})?/


정규식 문법 출처 - Tip Archives



출처: http://gocoding.tistory.com/93


전자우편 주소

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


URL

/^(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/


HTML 태그 - HTML tags:

/\<(/?[^\>]+)\>/


전화 번호 - 예, 123-123-2344 혹은 123-1234-1234:

/(\d{3}).*(\d{3}).*(\d{4})/


날짜 - 예, 3/28/2007 혹은 3/28/07:

/^\d{1,2}\/\d{1,2}\/\d{2,4}$/ 


jpg, gif 또는 png 확장자를 가진 그림 파일명: 

/([^\s]+(?=\.(jpg|gif|png))\.\2)


1부터 50 사이의 번호 - 1과 50 포함: 

/^[1-9]{1}$|^[1-4]{1}[0-9]{1}$|^50$/ 


16 진수로 된 색깔 번호: 

/#?([A-Fa-f0-9]){3}(([A-Fa-f0-9]){3})?


적어도 소문자 하나, 대문자 하나, 숫자 하나가 포함되어 있는 문자열(8글자 이상 15글자 이하)

 - 올바른 암호 형식을 확인할 때 사용될 수 있음: 

/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,15}/


숫자만 가능 : [ 0 ~ 9 ] 주의 : 띄어쓰기 불가능
/^[0-9]+$/

 

 이메일 형식만 가능

/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/

 

한글만 가능 : [ 가나다라 ... ] 주의 : ㄱㄴㄷ... 형식으로는 입력 불가능 , 띄어쓰기 불가능
/^[가-힣]+$/

 

한글,띄어쓰기만 가능 : [ 가나다라 ... ] 주의 : ㄱㄴㄷ... 형식으로는 입력 불가능 , 띄어쓰기 가능
/^[가-힣\s]+$/

 

영문만 가능 :
/^[a-zA-Z]+$/

 

 영문,띄어쓰기만 가능
/^[a-zA-Z\s]+$/

 

전화번호 형태 : 전화번호 형태 000-0000-0000 만 받는다. ]
/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/

 

도메인 형태, http:// https:// 포함안해도 되고 해도 되고
/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/

 

도메인 형태, http:// https:// 꼭 포함
/^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/

 

도메인 형태, http:// https:// 포함하면 안됨
/^[^((http(s?))\:\/\/)]([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/

 

한글과 영문만 가능
/^[가-힣a-zA-Z]+$/;

 

숫자,알파벳만 가능
/^[a-zA-Z0-9]+$/;

 

주민번호, -까지 포함된 문자열로 검색
/^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$/


Jquery 에서는 $.test() 메서드로,

 PHP 에서는 preg_match() 함수로 사용



정규표현식의 기본 문법

정규표현식은 소프트웨어에 따라서 방식이나 지원 범위가 다를 수 있습니다.

^TheThe로 시작하는 문자열
of despair$of despair로 끝나는 문자열
^abc$abc로 시작하고 abc로 끝나는 문자열 (abc 라는 문자열도 해당됨)
noticenotice가 들어 있는 문자열


ab*a 다음에 b가 0개 이상 (a, ab, abbb 등등)
ab+a 다음에 b가 1개 이상 (ab, abbb 등등)
ab?a 다음에 b가 있거나 없거나 (ab 또는 a)


ab{2}a 다음에 b가 2개 있는 문자열 (abb)
ab{2,}a 다음에 b가 2개 이상 (abb, abbbb 등등)
ab{3,5}a 다음에 b가 3개에서 5개 사이 (abbb, abbbb, 또는 abbbbb)

*+?는 각각 {0,}{1,}{0,1}과 같습니다.

( )는 문자열을 묶음 처리할 때 사용
a(bc)*a 다음에 bc가 0개 이상 (묶음 처리)
a(bc){1,5}a 다음에 bc가 1개에서 5개 사이


hi|hellohi hello가 들어 있는 문자열
(b|cd)efbef 또는 cdef
(a|b)*ca와 b가 섞여서 여러번 나타나고 그뒤에 c가 붙어있는 패턴


. (점)임의의 한 문자
^.{3}$3문자로만 되어 있는 문자열


[ ]괄호 안에 있는 내용 중 임의의 한 문자
[^ ]첫문자로 ^를 쓰면 괄호 내용의 부정. 즉 괄호 안에 포함되지 않는 한 문자
[ab]또는 b (a|b 와 동일한 표현)
[a-d]소문자 a에서 d까지 (a|b|c|d 또는 [abcd] 와 동일)
^[a-zA-Z]영문자로 시작하는 문자열
[0-9]%% 문자 앞에 하나의 숫자가 붙어 있는 패턴
%[^a-zA-Z]%두 % 문자 사이에 영문자가 없는 패턴


특수 문자 자체를 검색하기 및 사용하기
\^^\..
\[[\$$
\((\))
\||\**
\++\??
\{{\\\
\n줄넘김 문자\r리턴 문자
\w알파벳과 _ (언더바)\W알파벳과 _ 가 아닌 것
\s빈 공간(space)\S빈 공간이 아닌 것
\d숫자\D숫자가 아닌 것
\b단어와 단어 사이의 경계\B단어 사이의 경계가 아닌 것
\tTab 문자\xnn16진수 nn에 해당하는 문자

[ ] 안에서는 특수 문자가 모두 효력을 잃게 됩니다.

검색 + 치환을 위한 하부식(부분식)
( )로 둘러싼 부분은 각각 하나의 덩어리로 취급해서,
검색시 ( ) 안에 해당되는 내용들을 변경할 내용에서 그대로 가져다 이용할 수 있습니다.
검색된 각각의 ( )안에 해당되는 내용은 변경할 내용에서 $1, $2, .. 등으로 지정해서 쓸 수 있습니다.
예제) mp3파일 이름 바꾸기
검색 : (.*) - (.*)\.mp3 .*은 길이에 상관없이 임의의 문자열, \.은 점
치환 : $2 - $1.mp3 앞에서 검색한 ( )안에 해당되는 내용끼리 순서 바꾸기
ex) "제목 - 연주자.mp3" Þ "연주자 - 제목.mp3"
앞에서 정의한 하부식을 다시 활용하기 (제가 잘못 이해한 것일 수도 있는데)
\n은 ( ) 하부식 중에서 n번째 하부식을 가리킵니다.
예제) (.+)\1+
\1로 되어 있으니까 첫번째 부분식 (.+)를 가리킵니다. 위 내용을 해석하자면, 일단 (.+)가 있으니까 이에 해당되는 내용을 찾고, \1+이 있으니까 첫번째 부분식 (.+)와 똑같은 내용이 그 뒤에 1번 이상 있는 문자열을 찾습니다.
예제) abab같은 문자열이 위에 해당되는데, 일단 (.+) 즉 임의의 문자열 ab를 찾고 그 뒤에 \1+로 첫번째 부분식을 다시 1번 이상 있는 것을 찾으니까 뒤의 ab가 이에 해당합니다.


변경자 ? 검색 방식 변경
(?i)대소문자 무시 (기본값)
(?-i)대소문자 구분
(?g)"greedy" 모드로 전환 (기본값)
(?-g)"greedy" 모드 해제, 따라서 "+"는 "+?"과 동일한 것으로 인식



  • 작성한 정규식을 바로 확인해 볼 수 있는 곳.
    regexpal.com
  • 정규식 문법
    바로가기