Upload
joohee-kang
View
315
Download
0
Embed Size (px)
Citation preview
Javascript The Good Parts
Chapter 7. Regular Expression
13년 4월 28일 일요일
What is RegExp? 문자열에서����������� ������������������ 특정����������� ������������������ 내용을����������� ������������������ 검색����������� ������������������ /����������� ������������������ 대체����������� ������������������ /����������� ������������������ 발췌하기����������� ������������������ 위해����������� ������������������ 사용.����������� ������������������
Javascript에서����������� ������������������ 사용하는����������� ������������������ 메소드
regexp.exec
regexp.test
string.match
string.repace
string.search
string.split
13년 4월 28일 일요일
Javascript에서의 Regular Expression정규표현식은 정규 언어에 대한 수학적 연구에서 비롯됨.
Ken Thompson은 Stephen Kleene 의 이론을 type-3 언어에 적용하여 텍스트 에디터/프로그래밍 언어에서 특정 패턴을 찾을 수 있게 실질적인 패턴 매칭 기능을 추가.
정규표현식의 약간의 재해석 + Perl 의 확장 구문을 따름.
13년 4월 28일 일요일
Example : URI Match
var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
var url = "http://www.ora.com:80/goodparts?q#fragment
13년 4월 28일 일요일
Result : URI Match
13년 4월 28일 일요일
URI match library...
https://code.google.com/p/jsuri/����������� ������������������
14가지로����������� ������������������ 쪼개놓음.����������� ������������������
strick����������� ������������������ mode����������� ������������������ /����������� ������������������ loose����������� ������������������ mode����������� ������������������ 구별.����������� ������������������
필자의����������� ������������������ 의견
정규 표현식은 더 복잡하게 만들수도 있지만, 길이가 짧고 간단한게 최고!
13년 4월 28일 일요일
var parse_number = /^-?\d+(?:\.\d*)?(?:e[+\-]?\d+)?$/i;
var test = function(num) {
document.writeln(parse_number.test(num));
};
test('1');test('number');test('98.6');test('132.21.86.100');test('123.45E-67'); //test('123.45D-67');
숫자 일치
13년 4월 28일 일요일
Regular Expression 객체 생성
생성 방법
정규 표현식 리터럴 사용
var my_regexp = /"(?:\\.|[^\\\"])*"/g;
RegExp 객체로 생성 var my_regexp = new RegExp("\"(?:\\.|[^\\\\\\\"])*\"", 'g');
13년 4월 28일 일요일
Regular Expression플래그
리터럴 플래그 설명 g Global
i Insensitive
m Multiline
RegExp 객체 속성 객세
설명global g flag 사용된 경우 true
ignoreCase i flag 사용된 경우 true
lastIndex 다음 exec 실행을 위한 시작 지점. 초기값 0.
multiline m 플래그가 사용된 경우 true
source 정규 표현식의 소스 텍스트
13년 4월 28일 일요일
RegExp 객체 function make_a_matcher() {
return /a/gi; }
var x = make_a_matcher();var y = make_a_matcher();
// x와 y는 같은 객체
x.lastIndex = 10; document.writeln(y.lastIndex); // 10
==>> 0이 나온다. 확인 필요. 스펙 바뀌었나?
13년 4월 28일 일요일
Regular Expression구성요소
정규 표현식
하나의 정규 표현식 시퀀스 포함
정규 표현식 시퀀스
하나의 정규 표현식 요소를 포함
정규 표현식 요소
문자
괄호로 묶인 그룹
문자 클래스
이스케이스 시퀀스
13년 4월 28일 일요일
Escape?����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \ -> 정규 표현식 요소/문자열에서 모두 이스케이프 되었다는 표시.
����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \f����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ -����������� ������������������ form����������� ������������������ feed����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \n����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ -����������� ������������������ line����������� ������������������ feed����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \r����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ -����������� ������������������ carriage����������� ������������������ return����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \t����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ -����������� ������������������ tab����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \u����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ -����������� ������������������ 16진수����������� ������������������ 유니코드����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \b����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ -����������� ������������������ 역스페이스����������� ������������������ 문자����������� ������������������ 아님!����������� ������������������ 문자의����������� ������������������ 앞/뒤����������� ������������������ 경계를����������� ������������������ 표시하는����������� ������������������ 메타데이터.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \d����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ [0-9]와����������� ������������������ 동일.����������� ������������������ 아라비아����������� ������������������ 숫자����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \D����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ [^0-9]����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \s����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ 공백����������� ������������������ 문자����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \S����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ^공백����������� ������������������ 문자����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \w����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ [0-9A-Za-z]����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \W����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ [^0-9A-Za-z]
����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \1����������� ������������������ 첫����������� ������������������ 번째����������� ������������������ 그룹에����������� ������������������ 캡쳐된����������� ������������������ 텍스트에����������� ������������������ 대한����������� ������������������ 참조����������� ������������������ 정보.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ -����������� ������������������ 중복된����������� ������������������ 단어를����������� ������������������ 찾고자����������� ������������������ 하는����������� ������������������ 경우����������� ������������������ 유용함.����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ var����������� ������������������ double_words����������� ������������������ =����������� ������������������ /([A-Za-z\u00C0-\u1FFF\u2800-\uFFFD\-]+)\s+\1/gi;����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \2����������� ������������������ 두����������� ������������������ 번째����������� ������������������ 그룹에����������� ������������������ 대한����������� ������������������ 참조����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ ����������� ������������������ \3����������� ������������������ 세����������� ������������������ 번째����������� ������������������ 그룹에����������� ������������������ 대한����������� ������������������ 참조
13년 4월 28일 일요일
Group
캡쳐 ()
비캡쳐 (?: )
긍정적 룩어헤드 (?= )
부정적 룩어헤드 (?! )
13년 4월 28일 일요일
Class특정 문자 집합을 지정
ex. 모음
(?:a|e|i|o|u) or [aeiou]
장점
1. 문자의 범위 지정 가능
ASCII 특수문자 [!-\/:-@\[-`{-]
2. 부정형 클래스
ASCII 특수문자에 해당하지 않는 문자 [^!-\/:-@\[-`{-]
13년 4월 28일 일요일
Qualifier
요소가 몇 번 일치해야 하는가?
/www/ = /w{3}/
{3,6}
{3,}
?
*
+
13년 4월 28일 일요일
The End
13년 4월 28일 일요일