태그 보관물: 정규식

자주 쓰이는 정규식(Regular Expression) 유형

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})?/

정규식 (Regular Expression)

(1) ^ (caret)
라인의 처음이나 문자열의 처음을 표시
예 : ^aa (문자열의 처음에 aa를 포함하면 참, 그렇지 않으면 거짓)

(2) $ (dollar)
라인의 끝이나 문자열의 끝을 표시
예 : aaa$ (문자열의 끝에 aaa를 포함하면 참, 그렇지 않으면 거짓)

(3) . (period)
임의의 한 문자를 표시
예 : ^a.c (문자열의 처음에 abc, adc, aZc 등은 참, aa 는 거짓)
예 : a..b$ (문자열의 끝에 aaab, abbb, azzb 등을 포함하면 참)

(4) [] (bracket)
문자의 집합이나 범위를 나타냄, 두 문자 사이의 범위는 “-” 사용.
[]내에서 “^”이 선행되면 not을 나타냄
예 : [abc] (a, b, c 중 어떤 문자, “[a-c].”과 동일)
예 : [Yy] (Y 또는 y)
예 : [A-Za-z0-9] (모든 알파벳과 숫자)
예 : [-A-Z]. (“-“(hyphen)과 모든 대문자)
예 : [^a-z] (소문자 이외의 문자)
예 : [^0-9] (숫자 이외의 문자)

(5) {} (brace)
{} 내의 숫자는 직전의 선행문자가 나타나는 횟수,범위를 나타냄
예 : a{3} (‘a’의 3번 반복인 aaa만 해당됨)
예 : a{3,} (‘a’가 3번 이상 반복인 aaa, aaaa,  … 등을 나타냄)
예 : a{3,5} (aaa, aaaa, aaaaa 만 해당됨)
예 : ab{2,3} (abb와 abbb 만 해당됨)
예 : [0-9]{2} (두 자리 숫자)
예 : doc[7-9]{2} (doc77, doc87, doc97 등이 해당)
예 : [^Zz]{3} (Z와 z를 포함하지 않는 5개의 문자열, abc, ttt 등)
예 : .{3,4}er (‘er’앞에 세 개 또는 네 개의 문자를 포함하는 문자열이므로 Peter, mother 등이 해당)

(6) * (asterisk)
“*” 직전의 선행문자가 0번 또는 여러번 나타나는 문자열
예 : ab*c (‘b’를 0번 또는 여러번 포함하므로 ac, abc, abbbc 등)
예 : * (선행문자가 없는 경우이므로 임의의 문자열 및 공백 문자열)
예 : .* (선행문자가 “.”이므로 하나이상의 문자를 포함하는 문자열)
예 : ab* (‘b’를 0번 또는 여러번 포함하므로 a, accc, abb 등)
예 : a* (‘a’를 0번 또는 여러번 포함하므로 k, kd, a, aa, abb 등)
예 : doc[7-9]* (doc7, doc777, doc778989, doc 등이 해당)
예 : [A-Z].* (대문자로만 이루어진 문자열)
예 : like.* (직전의 선행문자가 ‘.’이므로 like에 0 또는 하나 이상의 문자가 추가된 문자열이 됨, like, likely, liker, likelihood 등)

(7) + (Plus Sign)
“+” 직전의 선행문자가 1번 이상 나타나는 문자열
예 : ab+c (‘b’를 1번 또는 여러번 포함하므로 abc, abcd, abbc 등)
예 : ab+ (‘b’를 1번 또는 여러번 포함하므로 ab, abcc, abb 등)
예 : [A-Z]+ (대문자로만 이루어진 문자열)
예 : like.+ (직전의 선행문자가 ‘.’이므로 like에 하나 이상의 문자가 추가된 문자열이 됨, likely, liker, likelihood 등, 그러나 like는 해당안됨)

(8) ? (question mark)
“?” 직전의 선행문자가 0번 또는 1번 나타나는 문자열
예 : ab?c (‘b’를 0번 또는 1번 포함하므로 abc, abcd 만 해당됨)

(9) () (parenthesis)
()는 정규식내에서 패턴을 그룹화 할 때 사용

(10) | (bar)
or를 나타냄
예 : a|b|c (a, b, c 중 하나, 즉 [a-c]와 동일함)
예 : yes|Yes (yes나 Yes 중 하나, [yY]es와 동일함)
예 : korea|japan|chinese (korea, japan, chinese 중 하나)

(11) \ (backslash)
위에서 사용된 특수 문자들을 정규식내에서 문자로 취급하고 싶을 때 ‘\’를 선행시켜서 사용하면됨
예 : filename\.ext (“filename.ext”를 나타냄)
예 : [\?\[\\\]] (‘?’, ‘[‘, ‘\’, ‘]’ 중 하나)