Latest web development tutorials

정규 표현식 - 예

간단한 식

검색 문자열에 자신의 일반 단일 문자와 일치하는 정규 표현식의 가장 단순한 형태. 예를 들면, 문자 등의 단일 모드, 항상 문자 A. 일치 검색 문자열이든 다음은 단일 문자의 일부 정규 표현식 패턴의 예입니다 :

/a/
/7/
/M/

많은 중대한 식의 단일 문자를 형성하기 위해 함께 결합 될 수있다. A, 7, M. 예를 들어, 다음 일반 식 단일 문자 식 조합 인

/a7M/

어떤 연결 연산자 있습니다. 단순히 문자 뒤에 다른 문자를 입력합니다.

문자 일치

도트 (.) 인쇄 및 비 인쇄 문자, 단 하나의 문자 예외의 다양한 문자열을 일치합니다. 예외는 개행 문자 (\ n)입니다. 다음 정규 표현식은 AAC, ABC, ACC, ADC 등뿐만 아니라, A1C, A2C, 교류, 그리고 # C를 일치 :

/a.c/

파일명 및 기간을 포함하는 문자열을 매치하기 (.)의 기간에 정규 표현 플러스 백 슬래시 (\) 문자 앞의 입력 문자열의 일부이다. 다음 일반 표현식은 여기서 filename.ext 일치, 설명하기 :

/filename\.ext/

이 표현은 당신이 "모든"단일 문자를 일치시킬 수 있습니다. 목록은 특정 문자 집합을 일치해야합니다. 예를 들어, 숫자 (1 장, 등등 제 2 장 등)과 장 제목을 찾을 수 있습니다.

괄호 안의 식

내 하나 이상의 개별 문자를 배치 대괄호 일치하는 문자 그룹의 목록을 ([및])를 작성합니다. 문자가 괄호 안에 할 때 목록 "브래킷의 표현"이라고합니다. 다른 위치에서와 같이, 일반적인 문자 즉, 입력 텍스트 자체 중 하나와 일치 괄호 내에 자신을 나타낸다. 당신이 브래킷 발현 대부분의 특수 문자로 표시 할 때 그 의미를 잃게됩니다. 그러나 다음과 같은 몇 가지 예외가있다 :

  • ] 캐릭터 제 아닌 경우,리스트의 끝에있다. 목록] 문자를 일치 시키려면, 첫 번째 장소에 넣어 [뒷면의 시작 부분에 따랐다.
  • \ 문자는 이스케이프 문자가되고 있습니다. \ 문자를 일치 시키려면 \\ 사용합니다.

그 위치에서 하나의 문자에 정규 표현식에서 브래킷 표현식 매치 만 문자로 묶여. 다음 정규 표현식 일치 1 장, 2 장, 3 장, 4 장과 제 5 장 :

/Chapter [12345]/

단어 장 후와 대괄호 문자에 대한 공간의 위치가 고정되어 있습니다. 브라켓 표현은 바로 단어 장과 문자 집합 뒤쪽의 공간에 다음과 같은 하나의 문자 위치를 일치 지정합니다. 이 아홉 번째 문자 위치입니다.

별도로 시작 문자와 끝 문자의 범위 (-) 하이픈을 사용하여 일치하는 문자 집합을 표현하는 대신 자체 문자의 범위를 사용합니다. 자 값의 범위 내에서 개별 문자의 상대적인 순서를 결정한다. 다음 정규 표현식 범위 표현식을 포함, 표현 괄호 목록에 위의 범위에 해당합니다.

/Chapter [1-5]/

이와 같이 지정된 범위에서 사용될 때, 시작 및 종료 값 모두의 범위에 포함된다. 또한 중요한 참고 유니 정렬 순서에 따라, 그 값이 이전 값의 끝에서 시작해야한다.

브래킷 발현 하이픈에 포함하려면 다음 방법 중 하나를 사용하십시오

  • 백 슬래시로 이스케이프 :
    [\-]
  • 괄호에있는 목록의 시작이나 끝에 하이픈. 다음 식은 모든 소문자 및 하이픈을 일치 :
    [-a-z]
    [a-z-]
    
  • 범위를 만들고,이 범위에서, 시작 값은 하이픈 문자 미만 및 끝 문자는 동일하거나 하이픈보다 크다. 다음 두 정규식은이 요구 사항을 만족
    [!--]
    [!-~]
    

모든 문자의 범위 내에서의 여부를 발견하기 위해,리스트의 선두에서 캐럿 (^)를 설정한다. 목록에있는 다른 위치에 문자가 표시 삽입 할 경우, 그 자체와 일치합니다. 다음 정규 표현식은 문자, 4 또는 5 자리 이후 일치 :

/Chapter [^12345]/

상기 예에서, 표현은 아홉 번째 위치 이외의 3, 4 또는 5 숫자와 문자가 일치한다. 따라서, 예를 들어, 7 장 일치하고, 제 9 장 일치합니다.

: 표시하기 위해 (-) 위의 표현은 하이픈을 사용할 수 있습니다

/Chapter [^1-5]/

브라켓 식의 전형적인 사용은 대문자 또는 소문자 또는 경기의 수를 지정하는 것입니다. 다음 표현식은 일치하는 항목을 지정합니다 :

/[A-Za-z0-9]/

대체 및 그룹화

두 개 이상의 대안 간의 통신을 선택할 수 있도록 문자 | 사용을 교체합니다. 예를 들어, 장 제목은 장 제목이 일치하는보다 넓은 범위를 반환하는 정규 표현식을 확장 할 수 있습니다. 그러나, 이것은 당신이 생각하는 것만 큼 간단하지 않다. 어느 한쪽의 문자 최대 표현 | 경기를 교체합니다.

다음과 같은 표현이 일치하는 장 또는 섹션 중 하나 또는 두 자리 숫자 뒤에 시작과 라인의 끝에서 나타나는 것을 생각할 수 있습니다 :

/^Chapter|Section [1-9][0-9]{0,1}$/

불행하게도, 라인 첫 번째 단어의 장, 또는 단어 절과 이후의 번호 라인의 일치 한쪽 끝을 일치 위의 정규 표현식. 입력 스트링이 제 22 인 경우, 상기 식은 워드 장 일치한다. 입력 문자열 (22) 인 경우, 식 (22)은 일치한다.

정규 표현식을 제어하기 쉽게하기 위해, 만약 여분의 범위를 제한하는 괄호를 사용하여, 즉, 단지 두 단어 제 및 항에 적용되도록한다. 그러나 괄호 하위 표현식을 작성, 가능 역 참조에 대한 절에 설명되어 나중에 사용하기 위해 그들을 캡처하는 데 사용됩니다. 위의 정규 표현식은 괄호 장소를 추가함으로써, 제 1 또는 제 3 일치하는 정규 표현식을 만들 수 있습니다.

다음 정규 표현식이 제대로 발현을 작동하기 위해, 그룹의 장과 절에 괄호를 사용합니다 :

/^(Chapter|Section) [1-9][0-9]{0,1}$/

이 표현이 작동하지만, 그러나 장 | 제 브래킷은 약 나중에 사용하기 위해 경기에 두 단어 중 하나를 잡을 것입니다. 상기 식 괄호 한 세트 만이기 때문에되도록 단지 "서브 일치."캡처

상기 예에서, 단지 제 절 간의 단어의 조합을 선택하기 위해 괄호를 사용할 필요가있다. 정규 표현식 패턴이 괄호에 배치되기 전에 일치를 방지하기 위해, 향후 사용을 위해 저장 될?. 다음 수정 자식 일치를 저장하지 않고 동일한 기능을 제공합니다 :

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

엑손 문자 :? ​​또한, 다른 두 개의 비 - 포착 메타 "은 룩어"매치 불리는 것을 생성한다. 브래킷 검색 문자열의 시작점의 정규식 패턴 일치에 전달 룩어 사용은? = 지정된는 일치한다. 룩어 사용 역방향! 지정 그것은 문자열부터 검색 문자열과 일치하지 않는 정규 표현 패턴에 일치한다.

예를 들어, 윈도우 3.1, 윈도우 95, 윈도우 98 및 윈도우 NT 참조에 대한 링크가 포함 된 문서가 있다고 가정합니다. 문서 윈도우 95를 가리 킵니다 업데이트 할 필요가 더 가정, Windows 98 및 Windows NT 모든 참조는 Windows 2000으로 변경되었습니다. 다음 정규 표현식 (이 전방 예측의 첫 번째 예이다)는 Windows 95, Windows 98 및 Windows NT 일치 :

/Windows(?=95 |98 |NT )/

일치하는 항목을 찾아 경기를 즉시 후 (내다 문자 제외) 텍스트의 다음 경기를 검색합니다. 상기 식 (98)은 윈도우 유사한 경우, 예를 들어, 윈도우 대신 후 98 이후의 검색을 계속한다.

다른 예

여기에 정규 표현식의 몇 가지 예입니다 :

正则表达式 描述
/\b([a-z]+) \1\b/gi 一个单词连续出现的位置。
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ 将一个URL解析为协议、域、端口及相对路径。
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章节的位置。
/[-a-z]/ a至z共26个字母再加一个-号。
/ter\b/ 可匹配chapter,而不能匹配terminal。
/\Bapt/ 可匹配chapter,而不能匹配aptitude。
/Windows(?=95 |98 |NT )/ 可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。
/^\s*$/ 匹配空行。
/\d{2}-\d{5}/ 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。
/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ 匹配 HTML 标记。