웹마스터 팁

정규식 문법

2014.02.28 23:21

웹엔진

정규식 문법입니다.
(?=pattern) 와 같은 문법은 잘 설명된게 없기도 하고 찾기도 어려워서 올립니다.

문자설명
\ 다음에 오는 문자를 특수 문자, 리터럴, 역참조 또는 8진수 이스케이프로 표시합니다. 예를 들어, 'n'은 문자 "n"을 찾지만 '\n'은 줄 바꿈 문자를 찾습니다. 시퀀스 '\\'는 "\"를 찾고 "\("는 "("를 찾습니다.
^ 입력 문자열의 시작 부분에서 위치를 찾습니다. RegExp 개체의 Multiline 속성이 설정되어 있으면 ^에서는 '\n'이나 '\r' 다음의 위치도 찾습니다.
$ 입력 문자열의 끝 부분에서 위치를 찾습니다. RegExp 개체의 Multiline 속성이 설정되어 있으면 $는 '\n'이나 '\r' 앞의 위치도 찾습니다.
* 앞의 문자나 부분식을 0개 이상 찾습니다. 예를 들어, zo*는 "z"과 "zoo"를 찾습니다. *는 {0,}에 해당합니다.
+ 앞의 문자나 부분식을 1개 이상 찾습니다. 예를 들어, 'zo+'는 "zo"와 "zoo"는 찾지만 "z"는 찾지 않습니다. +는 {1,}에 해당합니다.
? 앞의 문자나 부분식을 0개나 1개 찾습니다. 예를 들어, "do(es)?"는 "do"나 "does"에서 "do"를 찾습니다. ? 는 {0,1}에 해당합니다.
{n} n은 음이 아닌 정수입니다. 정확히 n개 찾습니다. 예를 들어, 'o{2}'는 "Bob"의 'o'는 찾지 않지만 "food"에 있는 두 개의 o는 찾습니다.
{n,} n은 음이 아닌 정수입니다. n개 이상을 찾습니다. 예를 들어, o{2,}는 "Bob"의 "o"는 찾지 않지만 "foooood"의 o는 모두 찾습니다. 'o{1,}'은 'o+'에 해당합니다. 'o{0,}'은 'o*'에 해당합니다.
{n,m} M 및 n은 음수가 아닌 정수이며 n <= m입니다. n개 이상 m개 미만을 찾습니다. 예를 들어, "o{1,3}"은 "fooooood"의 처음에 오는 3개의 o를 찾습니다. 'o{0,1}'은 'o?'에 해당합니다. 쉼표와 숫자 사이에는 공백을 넣을 수 없습니다.
? *, +, ?, {n}, {n,}, {n,m} 등의 다른 수량자 뒤에 바로 이 문자가 오면 일치하는 패턴은 non-greedy입니다. non-greedy 패턴은 가능한 한 검색 문자열을 적게 찾습니다. 반면 기본 greedy 패턴은 가능한 한 검색 문자열을 많이 찾습니다. 예를 들어, "oooo" 문자열에서 'o+?'는 "o" 하나만 찾는데 'o+'는 모든 'o'를 찾습니다.
. "\n"이외의 모든 단일 문자를 찾습니다. '\n'을 비롯한 모든 단일 문자를 찾으려면 '[\s\S]' 패턴을 사용합니다.
(pattern) 패턴을 찾아 일치하는 항목을 캡처하는 부분식입니다. $0…$9 속성을 사용하여 결과로 생성된 Matches 컬렉션에서 캡처된 일치 항목을 검색할 수 있습니다. 괄호 문자( )를 찾으려면 '\('이나 '\)'를 사용합니다.
(?:pattern) 패턴은 찾지만 일치하는 항목은 캡처하지 않는 부분식, 즉 나중에 사용하기 위해 저장하지 않는 비캡처링 일치 항목입니다. 패턴의 일부를 "or" 문자(|)를 사용하여 결합할 때 유용합니다. 예를 들어 'industr(?:y|ies)는 'industry|industries'보다 더 경제적인 표현입니다.
(?=pattern) 양의 미리 보기 검색을 수행하는 부분식으로 패턴에 일치하는 문자열이 시작된 위치에서 문자열을 찾습니다. 이는 비캡처링 일치, 즉 나중에 사용하기 위해 캡처하지 않는 일치입니다. 예를 들어 'Windows (?=95|98|NT|2000)'는 "Windows 2000"의 "Windows"는 찾지만 "Windows 3.1"의 "Windows"는 찾지 않습니다. 미리 보기는 문자를 소비하지 않습니다. 즉, 일치가 나타나면 미리 보기를 구성하는 문자 다음이 아니라 마지막 일치 항목 바로 뒤에서 다음 일치 항목에 대한 검색이 시작됩니다.
(?!pattern) 음의 미리 보기 검색을 수행하는 부분식으로 패턴에 일치하지 않는 문자열이 시작된 위치에서 검색 문자열을 찾습니다. 이는 비캡처링 일치, 즉 나중에 사용하기 위해 캡처하지 않는 일치입니다. 예를 들어 'Windows (?!95|98|NT|2000)'는 "Windows 3.1"의 "Windows"는 찾지만 "Windows 2000"의 "Windows"는 찾지 않습니다. 미리 보기는 문자를 소비하지 않습니다. 즉, 일치가 나타나면 미리 보기를 구성하는 문자 다음이 아니라 마지막 일치 항목 바로 뒤에서 다음 일치 항목에 대한 검색이 시작됩니다.
x|y x 또는 y를 찾습니다. 예를 들어 'z|food'는 "z" 또는 "food"를 찾습니다. '(z|f)ood'는 "zood" 또는 "food"를 찾습니다.
[xyz] 문자 집합. 괄호로 묶인 문자 중 하나를 찾습니다. 예를 들어, '[abc]'는 "plain"에서 'a'를 찾습니다.
[^xyz] 음수 문자 집합. 괄호로 묶이지 않은 문자를 찾습니다. 예를 들어, '[^abc]'는 "plain"에서 'p'를 찾습니다.
[a-z] 문자의 범위. 지정한 범위에서 문자를 찾습니다. 예를 들어, '[a-z]'는 'a'에서 'z'까지의 범위에서 소문자 영문자를 찾습니다.
[^a-z] 음의 범위 문자. 지정한 위치에 있지 않은 문자를 찾습니다. 예를 들어, '[^a-z]'는 'a'에서 'z'까지의 범위에 있지 않은 문자를 찾습니다.
\b 단어 경계, 즉 단어와 공백 사이의 위치를 찾습니다. 예를 들어, 'er\b'는 "never"의 'er'은 찾지만 "verb"의 'er'은 찾지 않습니다.
\B 비단어 경계를 찾습니다. 'er\B'는 "verb"의 'er'은 찾지만 "never"의 'er'은 찾지 않습니다.
\cx x로 표시된 제어 문자를 찾습니다. 예를 들어 \cM은 Control-M이나 캐리지 리턴 문자를 찾습니다. x의 값은 A-Z이나 a-z의 범위에 있어야 합니다. 범위를 벗어나면 c는 리터럴 'c' 문자로 간주됩니다.
\d 숫자를 찾습니다. [0-9]에 해당합니다.
\D 숫자가 아닌 문자를 찾습니다. [^0-9]에 해당합니다.
\f 용지 공급 문자를 찾습니다. \x0c와 \cL에 해당합니다.
\n 줄 바꿈 문자를 찾습니다. \x0a와 \cJ에 해당합니다.
\r 캐리지 리턴 문자를 찾습니다. \x0d와 \cM에 해당합니다.
\s 공백, 탭, 용지 공급 등을 비롯한 모든 공백 문자를 찾습니다. [\f\n\r\t\v]에 해당합니다.
\S 공백이 아닌 문자를 찾습니다. [^ \f\n\r\t\v]에 해당합니다.
\t 탭 문자를 찾습니다. \x09와 \cI에 해당합니다.
\v 세로 탭 문자를 찾습니다. \x0b와 \cK에 해당합니다.
\w 밑줄을 비롯한 모든 문자를 찾습니다. '[A-Za-z0-9_]'에 해당합니다.
\W 비단어 문자를 찾습니다. '[^A-Za-z0-9_]'에 해당합니다.
\xn n을 찾는데, 여기서 n은 16진수 이스케이프 값입니다. 16진수 이스케이프 값은 정확히 두 자리 수입니다. 예를 들어, '\x41'은 "A"를 찾습니다. '\x041'은 '\x04' & "1"에 해당합니다. ASCII 코드가 정규식에 사용될 수 있습니다.
\num num을 찾는데, 여기서 num은 양의 정수입니다. 캡처된 일치에 대한 역참조입니다. 예를 들어, '(.)\1'은 두 개의 연속된 동일 문자를 찾습니다.
\n 8진수 이스케이프 값이나 역참조 중 하나를 식별합니다. \n 앞에 n개 이하의 캡처된 부분식이 오면 n은 역참조입니다. 그렇지 않고 n이 8진수(0-7)이면 n은 8진수 이스케이프 값입니다.
\nm 8진수 이스케이프 값이나 역참조 중 하나를 식별합니다. \nm 앞에 nm개 이하의 캡처된 부분식이 오면 nm은 역참조입니다. \nm 앞에 n개 이하의 캡처가 오면 n은 뒤에 리터럴 m이 오는 역참조입니다. 처리 조건이 없으면 \nm은 n과 m이 8진수(0-7)일 때 8진수 이스케이프 값 nm을 찾습니다.
\nml n이 8진수(0-3)이고 m과 l이 8진수(0-7)인 8진수 이스케이프 값 nml을 찾습니다.
\un n을 찾는데, 여기서 n은 네 자리 16진수로 표현된 유니코드 문자입니다. 예를 들어 \u00A9는 저작권 기호(ⓒ)를 찾습니다.

원본 내용 출처 : http://msdn.microsoft.com/ko-kr/library/ae5bf541(v=vs.90).aspx (일부 수정)
제목 글쓴이 날짜
날짜를 출력하는 간단한 소스입니다 낮은자 2014.03.07
[jQuery] 클릭하면 내용이 사라지는 방법 낮은자 2014.03.07
한글, 영문, 숫자, 특수문자 체크하는 함수 ByteCMC 2014.03.07
자주 쓰이는 정규표현식 모음 투니페이퍼 2014.03.06
css3 둥근테두리 만들기 낮은자 2014.03.06
XE 어플로 만들때 PUSH 기능처리 방법 웹빌드 2014.03.06
페이지 모듈에서 다국어 기능 작동 안 하는 버그 패치법 [1] sejin7940 2014.03.04
폰갭 제작 어플 gcm 발송시 변수 웹빌드 2014.03.04
xe 홈페이지 폰갭으로 묶을때 웹빌드 2014.03.03
방명록 댓글 줄바꿈 메디칼온 2014.03.03
스케치북5 모바일 댓글 작성시 엔터를 쳤을 때 <br /> 코드 뜨는 문제 해결 [7] oryan 2014.02.23
홈페이지 접속자, 글(댓글) 작성자 국가 국기 표시 적용 방법 [19] file 라싸 2014.01.08
[팁 시리즈 2] 한글 도메인이나 영문 도메인 설정을 잘못 건드려서 사이트의 모든 기능이 거의 먹통입니다! Omega3 2014.03.01
[팁 시리즈 1] 웹 사이트 이전 및 복구/백업(이)가 되지 않습니다! [6] Omega3 2014.02.28
정규식 문법 웹엔진 2014.02.28
썸네일 생성시 crop 이 상단 기준으로 생성되게 하는 방법 [5] sejin7940 2013.10.04
기초설명_알고리즘(algorithm) [2] ifnelse 2008.07.28
사이트 url에 자꾸 index.php 가 붙어다닐때 [7] file 마시멜 2011.05.01
누리고 + KCP 결제 모듈 사용시 "연동 모듈 호출 오류" 가 날때 [1] idkiller 2014.02.26
페이지가 갑자기 하얀화면으로 나올경우에는 이렇게 해보십시오. [9] file 하나로45 2007.12.13