■ 정규표현식 정해진 패턴을 사용해서 패턴에 일치하는 데이터 검색을 지원하는 표현식 ■ 정규표현식에 쓰이는 특수문자 1. '.' 임의의 한 문자 ex) s.e -> sae, sbe, sce, sde ... .ce -> ace, kce, dce ... 2. '*' 바로 앞의 문자가 없거나 하나 이상 ex) s*e -> e, se, see, ssse ... abc* -> ab, abc, abcc, abccc ... h*im -> im, him, hhim, hhhim ... 3. '+' 바로 앞의 문자가 하나 이상 ex) s+e -> se, sse, ssse ... 4. '?' 바로 앞의 문자가 없거나 하나 ex) th?e -> e, the 이 두가지표현이 유일하겠지. 5. '^' (문자열에 대한 녀석) 바로 뒤의 문자열로 시작. ex) ^The.. 뒷부분부터 공백까지 검사. -> The girl is, Theather ^a?bc -> bc, abc ... ^.e -> he, me, request, settle ... ^s.e?.. e는 나와도 되고 안나와도 되고 -> sa, sae, sb, sbe ... 6. '$' (문자열에 대한 녀석) 바로 앞의 문자열로 종료 ex) a?bc$ -> eeabe, seebc, bc .. +.e$ -> onthetoe, bctae, appetittle ... s?c+$ -> e, se, ee, eee, seee, seee ... 7. '[]' [] 안에 있는 문자 중 하나 범위는 '-'로 지정 ex) [ab]cd -> acd, bcd .. [a-z] -> 영문 소문자 [a-zA-Z] -> 영문자........ 자바스크립트에서 어렵게 구현한 녀석들인데 간편하내~ [0-9] -> 숫자 ag[a-z] -> aga, agbcd, agzzz ... ^ab[cd]ef -> abcef, abdef ... ^[a-zA-Z] -> 영문자로 시작.... 아이디 검사할 때 첫글자가 영문자와 '_' 만 쓰도록 할때는 ^[a-zA-Z_] ^[가-힣] -> 한글로 시작해야 할 때 [^a-zA-Z0-9] -> ^이 안으로 들어가면 제외의 의미가 된다는거~ 부정의 의미.. 영문자나 숫자로 시작 X [a-zA-Z0-9]$ -> 영문자나 숫자로 종료 "[가-힣]" -> 한글... 완성형만 가능해.. 가령, ㅋㅋㅋ 같은 녀석은 안된다는 거지. "[abc]" -> 이 안에 있는 문자중에 하나. 즉, a b c 중에 하나의 문자란 말이지. C#문법으로 치면 ("a" || "b" || "c")와 같은 개념이야.. 8. '{}' {} 앞의 문자나 문자열 출현 횟수, 스키마에서 min/maxoccur과 같은 개념으로 이해하렴. ex) a{2}b -> aab ... a가 꼭 2번 나와야 한다는 뜻. a{2,}b -> aab, aaab, aaaab ... a가 최소 2번 이상 나오도록 하라는 뜻. a{2, 3}b -> aab, aaab ... a는 최소 2번 최대 3번 나오도록 하라는 뜻.
9. '()' ()안에 있는 문자를 그룹화 ex) a(bc){2} -> abcbc ... a다음 bc가 2번 나와야 한다는 뜻.. a(bc)* -> abcbcbc ... a다음 bc의 출현횟수는 무한대가 가능하다는 뜻. 10. '|' or 연산자....... 영어로만 아이디를 만들어라? [a-zA-Z]+ 공백이 없는 영어단어 ex) he|she -> he, she is.. (he|she)is -> heis, sheis ... 11. 특수 문자 사용 ^ [] $ () | * + ? {} \ 앞에 \ 붙여서 사용 ex) \*+ -> * 가 하나 이상 포함된 패턴...... * 나 ** 나 *** 별이 무한대로 계속도 가능하고 말야.
\d : 순수한 숫자, 정수값, 0-9 \d{2,3}-/d{3,4}-/d{4} : 전화번호를 찾는 정규식이야... 여기서 하이퍼는 그냥 하이퍼(-)야. -? 하이퍼뒤에 물음표가 있으면 하이퍼가 있어도 되고 없어도 된다는 뜻. \D : 숫자가 아닌 나머지 모든 얘. \w : [a-zA-Z0-9] 의 줄임표현. \W : [^a-zA-Z0-9] 영문자와 숫자만 아니면 된다는 뜻. \s : 공백 \S : 공백이 아닌 나머지 얘들. 12. 문제 1) 4.6% 라는 걸 찾겠다. [0-9]{1,3}\.?[0-9]*% 2) 전화번호를 찾자. \d{2,3}-\d{3,4}-\d{4} [0-9]{2,3}-[0-9]{3,4}-[0-9]{4} 3) url 주소를 가져와보자. http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? 4) 이름 : ( textBox ) [가-힣]{2,5} -> 한글을 최소 2~5까지 입력가능하다는 뜻. 5) 나이 : ( textBox ) [0-9]{1,2} -> 숫자가 최소 1~2까지 입력가능하다는 뜻. 1?[0-9]?[0-9] 6) 민증번호 [0-9]{6}-[0-9]{7} [0-9][0-9][01][0-9][0123][0-9]-[12][0-9]{6} ▒ 1. 자바에서의 유효성검사를 다시 기억해보자. function send() { var ex = /^[가-힣]{2,5}%; --> " " 로 감싸면 X, 그럼 문자값이 되버리잖니.. // 만약 위처럼 이름검사가 아닌 전화번호입력이라면.. var ex = /\d{2,3}-\d{3,4}-\d{4};
if (ex.test(document.all.txtName.value)) --> 닷넷에서의 Match와 비슷한 test()함수 { alert("ok"); } else { alert(".."); } } |