- Regular Expression
description
Transcript of - Regular Expression
Learning PHP… #17
- Regular Expression
JS 사용자 입력 검증
Learning PHP… #17
Javascript 검증 오류 처리
폼양식입력값
검증 , 오류 처리란 ?
값을 입력하고 제출하기 전에
- 공란은 없는가 ?
- 입력 조건을 주고 싶은가 ?
글자 개수 , 지정된 문자 등
-잘못 입력된 값은 없는가 ?
-Email 주소의 형태가 정확 한가 ?
Learning PHP… #17
Javascript 로 사용자 입력 검증
자료를 제출하면 ?(validate.html)
Learning PHP… #17
Validate.html 코드분석
폼양식에 입력된 값에 관한 함수
Learning PHP… #17
Validate.html 코드분석
입력된 문자 검사-> 정규 표현식 사용 (regular expression)
Learning PHP… #17
정규 표현식 (Regular Expression)
Pattern matching 에 널리 활용되는 형식언어(http://en.wikipedia.org/wiki/Regular_expression)
기본 사용법/ 원하는 문자 패턴 ( 메타문자 )/
※ 특별한 메타문자[ : 열림괄호 , ] : 닫힘 괄호 , l-r: l 과 r 사이의 문자범위 ^ : 괄호사이의 모든 것을 뒤집음 (not)a-z : 모든 소문자A-Z 모든 대문자0-9 : 모든 숫자
예 ) /[^a-zA-Z0-9_-]/-> 모든 정규표현식은 / 로 감싸야 한다
Learning PHP… #17
정규 표현식 (Regular Expression)
문자 매칭
/<.*>/
* : 0 개 이상의 어떤 문자 ( 들 )+ : 1 개 이상의 어떤 문자 ( 들 )? : 0 개 또는 1 개의 어떤 문자. : 모든 문자
: “<” 로 해서 “ >” 로 끝나며 , 그 안에는 비거나 , 모든 문자가 와도 됨
/<.+>/ : “<” 로 해서 “ >” 로 끝나며 , 그 안에는 1 개 혹은 모든 문자가 와도 됨
/5\.0/ : 5.0 과 일치 . ‘.’ 은 \. 으로 이스케이프
/5\.0*/ : ?( 생각해보세요 )
Learning PHP… #17
정규 표현식 (Regular Expression)
괄호‘ ( )’ 로 그룹만들기
/1(,000)+ /
* : 0 개 이상의 어떤 문자 ( 들 )+ : 1 개 이상의 어떤 문자 ( 들 )? : 0 개 또는 1 개의 어떤 문자. : 모든 문자
뜻 : 1,0001,000,0001,000,000,000 등을 의미함
마지막 공백은 공백을 만나 끝나야만일치함을 의미함
Learning PHP… #17
정규 표현식 (Regular Expression)
문자 클래스 ‘ [ ]’ : 불명확한 일치
/gr[ae]y/
* : 0 개 이상의 어떤 문자 ( 들 )+ : 1 개 이상의 어떤 문자 ( 들 )? : 0 개 또는 1 개의 어떤 문자. : 모든 문자
뜻 : gray, grey 모두 일치함단 , 둘 중 한 개만 선택가능 (or)
/Le *Guin/
뜻 : LeGuin, Le Guin, Le Guin 모두 일치함-> 공백 뒤에 * 를 넣는다 .
Learning PHP… #17
정규 표현식 (Regular Expression)
범위 (-) 표시 / 메타 문자들
/[0-9]/
\d : 한 개의 숫자 일치 \D 숫자가 아닌것 한 개 일치\n : 새줄 문자 일치\s : 공백 일치 \S 공백이 아닌것 한 개 일치\t : tab 문자 일치\w : 단어문자 일치 (a-z, A-Z, 0-9, _)\W : 단어 아닌 문자 일치 (a-z,A-Z,0-9,_ 제외 모든 문자 ){n} : 정확히 n 개 일치 {n,} : n 개 혹은 그 이상 일치{min, max} : 적어도 min 부터 최대 max 개까지 일치
뜻 : 0~9 사이의 유일한 숫자와 일치 [0-9] 대신 [\d] 를 써도 된다 . (digit)
Automata (http://en.wikipedia.org/wiki/Automata_theory )
Learning PHP… #17
정규 표현식 (Regular Expression)
복잡한 예제
<a href=“www.mozilla.org”> 전체와 일치시키려면
/<[^>]+>/
/ : 정규표현식 시작< : 태그의 열림 괄호만 일치[^>] : ‘> 를 제외하고’일치하는 문자클래스+ : 적어도 하나 이상의 [^>]> : 태그의 닫힘 괄호만 일치/ : 정규표현식 끝
Learning PHP… #17
정규 표현식 (Regular Expression)
복잡한 예제
/[^a-zA-Z0-9_-]/
/ : 정규표현식 시작[ : 문자클래스 시작^ : not( 부정 )a-z : 소문자A-Z : 대문자0-9 : 모든 숫자_- : 언더바와 대쉬 문자] : 문자클래스 끝/ : 정규표현식 끝
뜻 : 소문자 , 대문자 , 숫자 , _,- 문자가 아닌 문자열
Learning PHP… #17
정규 표현식 (Regular Expression)
메타 문자 : 문자이외에 특별한 의미를 가진 문자
/ . * + ?
[ 문자 ( 집합 )] [^ 문자 ( 집합 )] ( 그룹 ) left|right a-z
^ 문자열의 시작에서 일치 ([^] 와 다름 )$ : 문자열의 끝에서 일치
\b \B \d \D \n \s \S \t \w \W \x
{n} {n,} {min,max}
Learning PHP… #17
정규 표현식 (Regular Expression)
정규표현식의 예제
rec[ei][ei]ve : receive, recieve, receeve, reciive rec[ei]{2}ve: 위와 같음rec(ei)|(ie)ve: receive, recieve (receeve, reciive 는 안됨 ) cat|dog : “I like cats and dogs” 에서 cat 이나 dogcats$: “My cats are friendly cats” 중에서 마지막 cats^my: “my cats are my pets” 중에서 첫번째 my\d{2,3} : 2 개 혹은 3 개의 숫자 00-999[\w]+ : 한 개 혹은 그 이상의 문자 단어[\w]{5}: 어떤 5 개의 문자 단어
Learning PHP… #17
정규 표현식 (Regular Expression)
Javascript 에 활용 : test(), replace() 메소드 활용
document.write(/cats/i.test(“Cats are fun. I like cats”)) -> true 반환
document.write((“Cats are fun. I like cats”).replace(/cats/gi, ”dogs”))-> “dogs are fun. I like dogs” 반환
/g : ‘global’ matching e.g., /cats/g : “I like cats and cats like me” 두번의 cats 모두 일치/i : 대소문자 모두 matching e.g., /dogs/gi : “Dogs like other dogs” 에서 Dogs와 dogs 일치 /[a-zA-Z]/ 대신 /[a-z]/i 혹은 /[A-Z]/i 사용
Learning PHP… #17
Thank you