Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바스크립트 유효범위
- 모듈
- 프로토타입
- 자바스크립트 상속
- 의미있는 이름
- 변수명
- 자바스크립트 함수
- 네이밍
- 클린코드
- 자바스크립트 메소드
- Safari
- mysql #mysql최적화 #최적화
- 리팩토링기법
- 리팩토링
- 자바스크립트
- 프로토타입 상속
- 자바스크립트 객체
- 자바스크립트 배열
- 자바스크립트 클로저
- 자바스크립트 모듈
- 정규식
- 자바스크립트 문법
- 자바스크립트 정규식
- 콜백
- 정규표현식
- 리팩토링이란
- 리팩토링 기법
- 클로저
- 자바스크립트 콜백
- 자바스크립트 정규표현식
Archives
- Today
- Total
개발정리
javascript / Chapter7. 정규 표현식 본문
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
00 들어가며
01 예제
02 정규표현식 객체 생성
03 구성요소
00 들어가며
- 자바스크립트 정규표현식은 perl에서 채용
- 메소드 종류
- regexp.exec
- regexp.test
- string.match
- string.replace
- string.search
- string.split
- 등등
- 자바스크립트의 정규 표현식은 약간의 재해석과 perl의 확장 구문을 제외하고는
벨 연구소에서 비롯된 원래의 체계를 따른다.
01 예제
URL 매칭 정규 표현식
- 각 그룹별 해석
/^(?:([A-Za-z]+):)?/
- ^ 는 문자열의 시작
- 뒷 ?는 옵션, 없어도 된다.
- 알파벳 1개 이상이고 마지막이 :로 끝나는 문자열
- 프로토콜 매칭 정규식
(\/{0, 3})
- /문자와 0번이상 3번이하 일치
([0-9.\-A-Za-z]+)
- 하나 이상의 숫자, '.', '-' 문자와 일치
(?::(\d+))?
- \d는 숫자 문자
- :로 시작하는 숫자 1개 이상
- 옵션 속성
- 포트번호 매치
(?:\/([^?#]*))?
- ?나 #을 제외한 0개이상의 문자
- 여러 제약조건이 부족한 어설픈 정규표현식이다.
(?:\?([^#]*))?
- ?로 시작하는 #을 제외한 문자 0번 이상
(?:#(.*))?$
- #으로 시작하는 마지막 옵션 그룹.
- $는 문자열의 끝을 의미
- 더 이상 URL은 없다는 뜻.
- 각 그룹별 해석
- 정규표현식은 짧고 간단할 때 최상이다.
다음은 숫자에 매칭되는 정규표현식
^-?
- 음수로 시작할 수 있다는 옵션
\d+
- 숫자로 시작하는가?
(?:\.\d*)?
- 비캡쳐 그룹
- 소수점과 그 뒤에 오는 0개 이상 숫자.
(?:e[+\-]?\d+)?$
- 옵션 비캡쳐 그룹
- e와 +, -선택, 그리고 숫자 하나 이상
- i
- i플래그는 대소문자를 구분하지 않겠다는 의미
02 정규표현식 객체 생성
- 두 가지 방법
- 리터럴 사용
- /.../
- RegExp생성자 사용
- 리터럴 사용
- 리터럴 플래그
- g(global) : 여러번 일치함, 정확한 의미는 메소드에 따라 다르다.
- i(insensitive) : 대소문자를 구분하지 않음
- m(multiline) : ^와 $가 라인 끝 문자에 일치 할 수있음
- RegExp
- 역슬래시가 리터럴과는 조금 다르다.
- 두 번씩 사용해야 함
- 플래그
- g플래그 사용시 true
- i플래그 사용시 true
- m플래그 사용시 true
- lastIndex : 다음 exec실행을 위한 시점. 초기값은 0
- source : 정규표현식 소스 텍스트
- 런타임시 알 수있는 자료를 가지고 정규표현식을 생성할 때 유용하다.
- 역슬래시가 리터럴과는 조금 다르다.
정규표현식 리터럴로 만들어진 RegExp객체는 다음과 같이 하나의 인스턴스를 공유한다.
03 구성요소
- 정규 표현식의 선택에는 하나 이상의 정규표현식 시퀀스가 포함된다.
각 시퀀스는 | 로 구분
- 시퀀스
- 하나 이상의 정규표현식 요소를 포함
- 수량자가 없다면 한 번만 일치
- 정규표현식 요소
- 문자, 괄호그룹, 문자 클래스, 이스케이프 시퀀스 등
- \ / [] () {} ? + * | . ^ $
- ^ : 문자의 시작
- & : 문자 끝
- . : 모든 문자
- 이스케이프
- 역슬래시는 정규표현식 요소와 문자열에서 모든게 이스케이프 됐다는 것을 의미
- 정규 표현식에서 다른 점
- \f 폼피드
- \n LF
- \r CR
- \t Tab
- \u 유니코드
- \b 는 역스페이스 문자가 아니다.
- \d 아라비아 숫자
- \D는 아라비아 숫자를 제외한 문자
- \s는 공백문자들 [\f\n\r\t\u000B\u0020\u00A0\u2028\u2029]
- \S는 \s의 반대
- \w는 [0-9A-Za-z]
- \W는 \w반대
- 간단히 문자만을 선택하고 싶을 때 사용하는 클래스
- [A-Za-z\u00C0-\u1FFF\u2800-\uFFFD]
- 자바스크립트 정규표현식은 국제화에 지원에 상당히 빈약하다.
- \b는 단어의 경계를 나타내지만 \w에 해당하는 규칙이 사용되기 때문에 다중 언어 어플리케이션에선 무용지물이다.
- \1은 첫 번째 그룹에 캡쳐된 텍스트에 대한 참조
중복된 단어를 찾고자 하는 경우
- 그룹
- 종류
- 캡쳐
- 비캡쳐
- 긍정형 룩어헤드
- 부정형 룩어헤드
- 캡쳐
- 괄호로 묶인 정규 표현식 선택
- 일치하는 문자들은 캡쳐된다.
- 캡쳐 그룹에는 번호가 주어짐.
- 비캡쳐
- (?: 접두어로 시작
- 일치하는지 확인만 한다.
- 긍정형 룩어헤드
- (?= 접두어로 시작
- 일치되는 부분을 찾은 뒤 텍스트를 그룹이 시작하는 지점으로 돌린다.
- 좋지 않음
- 부정형 룩어헤드
- (?! 접두어로 시작
- 긍정형과 반대로 동작
- 역시 좋지않다.
- 종류
- 클래스
- 특정 문자 집합 하나를 지정하는데 편리
- (?:a|e|i|o|u) === [aeiou]
- 문자의 범위를 지정할 수 있다.
- 특수문자
- [!-\/:-@\[-`{-]
- ! ~ / 까지
- : ~ @ 까지
- [ ~ `까지
- { 이후 모든 문자
- 특수문자
- 부정형 클래스
- ^를 붙이면 부정형
- 클래스 내의 이스케이프
- [/b]는 단어 경계가 아닌 역스페이스 문자
- 문자클래스에서 이스케이프되어야 하는 특수문자
- / [ \ ] ^
- 수량자
- 몇 번 일치해야 하는지 결정하는 수량자
/www/ === /w{3}/
{3,6}은 3번에서 6번 일치 {3,} 은 3번 이상 ?는 {0, 1}
- *은 {0,} 0번 이상
- +는 {1,} 1번 이상
- 일반적으로 ?를 붙이지 않는 정규 표현식이 좋다.
참고문헌
1. 더글라스 크락포드, 김명신 『자바스크립트 핵심가이드 javascript The good parts』, 한빛미디어
'JS > javascript' 카테고리의 다른 글
Chapter9, 부록 (0) | 2017.04.09 |
---|---|
Chapter8 메소드 (0) | 2017.04.09 |
javascript / Chapter6. 배열 (0) | 2017.02.26 |
javascript / Chapter5. 상속 (0) | 2017.02.26 |
javascript / Chapter4. 함수 2 (0) | 2017.02.08 |
Comments