Develop/Javascript

정규식(자료검색중)

GuriZzang 2014. 6. 11. 02:35

기본적으로 자바스크립트에서 정규표현식은 / (슬래쉬)로 감싼다

"(큰따옴표) 또는 '(작은따옴표)로 감싸지 않는다.

 

그리고 마지막에 /g 또는 /i 또는 /gi 로 끝난다

왜 그런지 궁금하면 각자 찾아보는 걸로 한다~

 

아래에서 뜻하는 정규 표현식은 영문 a-z 로 시작하고 이후에 a-z0-9 사이 문자열이 오면 된다는 것이다.

대괄호 앞에 ^가 붙으면 시작을 뜻하고 대괄호 안에 ^가 붙으면 제외를 뜻한다.

^[a-z]로 되어 있으니 시작을 영문 a-z로 하는 것을 뜻한다

+ 연산자로 연결을 한다.

{5,19}는 5~19자리를 뜻한다.

 

앞에서 ^[a-z]에서 1자리를 먹었으니 이후에 [a-z0-9]{5,19} 5~19자리이니...

결국은 6~20 자리를 뜻한다.

 

$가 붙으면 끝을 뜻한다.

[a-z0-9]{5,19}$ 이니.. 영문소문자 또는 숫자로 끝이 나면 된다.

 

var idReg = /^[a-z]+[a-z0-9]{5,19}$/g;
if( !idReg.test( $("input[name=uid]").val() ) ) {
alert("아이디는 영문자로 시작하는 6~20자 영문자 또는 숫자이어야 합니다.");
return;
}

 

아래에는 예제들이다.

 

[영문 대문자 또는 소문자로 시작하는 아이디, 끝날때 영문 대문자 또는 소문자]

var idReg = /^[A-za-z]$/g;

 

[영문 대문자 또는 소문자로 시작하는 아이디, 끝날때 제한 없음]

var idReg = /^[A-za-z]/g;

 

[영문 대문자 또는 소문자 또는 숫자로 시작하는 아이디, 끝날때 영문 대문자 또는 소문자 또는 숫자]

var idReg = /^[A-za-z0-9]$/g;

 

[영문 대문자 또는 소문자 또는 숫자로 시작하는 아이디, 끝날때 제한 없음]

var idReg = /^[A-za-z0-9]/g;

 

[영문 대문자 또는 소문자로 시작하는 아이디, 길이는 5~15자, 끝날때 영문 대문자 또는 소문자]

var idReg = /^[A-za-z]{5,15}$/g;

 

[영문 대문자 또는 소문자로 시작하는 아이디, 길이는 5~15자, 끝날때 제한 없음]

var idReg = /^[A-za-z]{5,15}/g;

 

[영문 대문자 또는 소문자 또는 숫자로 시작하는 아이디, 길이는 5~15자, 끝날때 영문 대문자 또는 소문자 또는 숫자]

var idReg = /^[A-za-z0-9]{5,15}$/g;

 

[영문 대문자 또는 소문자 또는 숫자로 시작하는 아이디, 길이는 5~15자, 끝날때 제한 없음]

var idReg = /^[A-za-z0-9]{5,15}/g;






//한글 : /[^ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/g

//영어 : /[^A-Za-z]/g

//숫자 : /[^0-9]/gi

//특수기호 : 

//조합 : /^[a-z]+[a-z0-9]{5,19}$/g; --영문으로 시작하는...

/*

[영문 대문자 또는 소문자로 시작하는 아이디, 끝날때 영문 대문자 또는 소문자]

var idReg = /^[A-za-z]$/g;

 

[영문 대문자 또는 소문자로 시작하는 아이디, 끝날때 제한 없음]

var idReg = /^[A-za-z]/g;

 

[영문 대문자 또는 소문자 또는 숫자로 시작하는 아이디, 끝날때 영문 대문자 또는 소문자 또는 숫자]

var idReg = /^[A-za-z0-9]$/g;

 

[영문 대문자 또는 소문자 또는 숫자로 시작하는 아이디, 끝날때 제한 없음]

var idReg = /^[A-za-z0-9]/g;

 

[영문 대문자 또는 소문자로 시작하는 아이디, 길이는 5~15자, 끝날때 영문 대문자 또는 소문자]

var idReg = /^[A-za-z]{5,15}$/g;

 

[영문 대문자 또는 소문자로 시작하는 아이디, 길이는 5~15자, 끝날때 제한 없음]

var idReg = /^[A-za-z]{5,15}/g;

 

[영문 대문자 또는 소문자 또는 숫자로 시작하는 아이디, 길이는 5~15자, 끝날때 영문 대문자 또는 소문자 또는 숫자]

var idReg = /^[A-za-z0-9]{5,15}$/g;

 

[영문 대문자 또는 소문자 또는 숫자로 시작하는 아이디, 길이는 5~15자, 끝날때 제한 없음]

var idReg = /^[A-za-z0-9]{5,15}/g;


숫자만 허용하는 정규식

 /[0-9]/;

 IP 입력 형식의 정규식

 /^(1|2)?\d?\d([.](1|2)?\d?\d){3}$/;

 E-Mail 입력 형식 정규식

 /^([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}$/;

 핸드폰 번호 입력 형식 정규식

 /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;

 일반 전화번호 입력 형식 정규식

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

 URL 입력 형식 정규식

 /(?:(?:(https?|ftp|telnet):\/\/|[\s\t\r\n\[\]\`\<\>\"\'])((?:[\w$\-_\.+!*\'\(\),]|%[0-9a-f][0-9a-f])*\:(?:[\w$\-_\.+!*\'\(\),;\?&=]|%[0-9a-f][0-9a-f])+\@)?(?:((?:(?:[a-z0-9\-가-힣]+\.)+[a-z0-9\-]{2,})|(?:[\d]{1,3}\.){3}[\d]{1,3})|localhost)(?:\:([0-9]+))?((?:\/(?:[\w$\-_\.+!*\'\(\),;:@&=ㄱ-ㅎㅏ-ㅣ가-힣]|%[0-9a-f][0-9a-f])+)*)(?:\/([^\s\/\?\.:<>|#]*(?:\.[^\s\/\?:<>|#]+)*))?(\/?[\?;](?:[a-z0-9\-]+(?:=[^\s:&<>]*)?\&)*[a-z0-9\-]+(?:=[^\s:&<>]*)?)?(#[\w\-]+)?)/gmi;



 숫자만 허용하는 정규식

 /[0-9]/;

 IP 입력 형식의 정규식

 /^(1|2)?\d?\d([.](1|2)?\d?\d){3}$/;

 E-Mail 입력 형식 정규식

 /^([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}$/;

 핸드폰 번호 입력 형식 정규식

 /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;

 일반 전화번호 입력 형식 정규식

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

 URL 입력 형식 정규식

 /(?:(?:(https?|ftp|telnet):\/\/|[\s\t\r\n\[\]\`\<\>\"\'])((?:[\w$\-_\.+!*\'\(\),]|%[0-9a-f][0-9a-f])*\:(?:[\w$\-_\.+!*\'\(\),;\?&=]|%[0-9a-f][0-9a-f])+\@)?(?:((?:(?:[a-z0-9\-가-힣]+\.)+[a-z0-9\-]{2,})|(?:[\d]{1,3}\.){3}[\d]{1,3})|localhost)(?:\:([0-9]+))?((?:\/(?:[\w$\-_\.+!*\'\(\),;:@&=ㄱ-ㅎㅏ-ㅣ가-힣]|%[0-9a-f][0-9a-f])+)*)(?:\/([^\s\/\?\.:<>|#]*(?:\.[^\s\/\?:<>|#]+)*))?(\/?[\?;](?:[a-z0-9\-]+(?:=[^\s:&<>]*)?\&)*[a-z0-9\-]+(?:=[^\s:&<>]*)?)?(#[\w\-]+)?)/gmi;




정규식 기본 표현

 

 *

 0또는 그이상 횟수로 매치 

 ?

 0또는 1회 매치

 +

 1회 또는 그이상 횟수로 매치

 {m}

 정확히 m회 매치

 {m,}

 최소한 m회 매치 

 {m,n}

 최소한 m회 최대한 n회 매치  

 |

 OR 를 의미함

 ^Auto

 첫번째 문자가 반드시 Auto로 시작함을 의미 

 Auto$

 마지막 문자가 반드시 Auto로 끝남을 의미


 \d [0-9]

 숫자

 \D [^0-9]

 숫자가 아닌것

 \s [\t\n\x0B\f\r]

 공백

 \S [^\s]

 공백이 아닌것

 \w [a-zA-Z_0-9]

 문자

 \W [^\w]

 문자가 아닌것

 ^

 시작부분

 $

 끝부분

 \b

 글자인 범위

 \B

 글자가 아닌것의 범위

 

 

 X?

 0 혹은 1

 X*

 0 이상

 X+

 1 이상

 X{n}

 n 개

 X{n,}

 n 이상

 X{n, m}

 n 이상 m 이하

 X|Y

 X or Y

 (X)

 묶음(그룹화)

 



사용자 계정 생성시 자주 사용하게 되는 룰이 영문, 숫자만 허용하는 것인데
이를 자바스크립트 정규표현식을 사용하면 무척 간단하게 표현이 가능하다

var regType1 = /^[A-Za-z0-9+]*$/;

 
영어는 대문자 소문자가 있기 때문에 두가지를 모두 식에 표현해 주어야 한다

var regType1 = /^[A-Za-z0-9+]*$/;
var regType1 = /^[A-Za-z0-9+]*$/; 


숫자도 0-9 라는 조건을 통해 필터링 할 수 있다

var regType1 = /^[A-Za-z0-9+]*$/; 


+ 는 대/소 영문자, 숫자가 한번 이상 나온다는 의미이며 
꺽쇠 바깥쪽의 별표(아스타리스크,*)는 꺽쇠 안의 조건이 0번 이상 반복된다는 의미이다

만약, 문자열 길이를 제한하고 싶으면 어떻게 하면 될까?
그 때는 브레이스({,})로 문자열 갯수를 지정해 주면 된다.

var regType1 = /^[A-Za-z0-9+]{4,12}$/; 


위와 같은 식을 이용하면 4자 이상, 12자 이하의 문자열 필터링이 가능하다.
완성된 코드는 아래와 같다.

var regType1 = /^[A-Za-z0-9+]*$/;
if (regType1.test(document.getElementById('userid').value)) { alert('아이디가 조건에 맞지 않습니다'); }


- NoPD -





 var email_regx=/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
 var pass_regx=/^[0-9a-zA-Z]{4,10}$/;
 var num_regx=/^[0-9]*$/;