이 글에서는 자바스크립트 정규식 정의(문법)에 대해 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
정규식을 정의하는 방법에는 두 가지가 있습니다. 하나는 RegExp()를 직접 호출하는 것이고, 두 번째는 리터럴로 직접 정의하는 것, 즉 var re = /regular rule/;
두 정의 메소드 모두 본질적으로 RegExp() 메소드를 호출합니다
동일한 일반 코드를 호출하면 ECMAScript3과 ECMAScript5의 동작이 완전히 다릅니다
function reg(){ var re = /\sjavascript/; return re; }
ECMAScript3 및 ECMAScript5에서 각각 reg() 메서드를 여러 번 호출
ECMAScript3에서는 동일한 RegExp 객체가 호출되지만 ECMAScript5에서는 EXCMAScript5에서 실행될 때마다 새로운 RegExp 객체가 생성되기 때문에 다른 RegExp 객체가 호출됩니다
ECMAScript3의 프로그램에는 숨겨진 위험이 있습니다. 객체가 한 곳에서 수정되는 한 이 객체를 호출하는 모든 위치가 변경되기 때문입니다.
1. 직접 캐릭터
는 일반적으로
와 같은 정규 표현식의 문자와 직접 일치합니다./javascript/
문자 자바스크립트와 직접 일치합니다
은 다음과 같은 문자가 아닌 문자 일치도 지원합니다.
o NUL 문자(u0000)
t 탭 문자(u0009)
n 줄바꿈 문자(u000A)
v 세로 탭(u000B)
f 폼 피드 문자(u000C)
r 캐리지 리턴 문자(u000D)
xnn 16진수 nn으로 지정된 라틴 문자(예: x0A)는 다음과 같습니다.
uxxxx 16진수 xxxx로 지정된 유니코드 문자(예: u0009는
와 동일)cX 제어 문자 ^X(예: cJ는 개행 문자 n과 동일함)
정규식에는 ''로 이스케이프 처리해야 하는 특별한 의미가 있는 구두점이 있습니다.
^$.* ?=!:|/()[]{}
2. 캐릭터 클래스
[...] 대괄호 안의 모든 문자
[^...] 대괄호 안에 없는 모든 문자
모든 문자
w [a-zA-Z0-9]에 해당하는 ASCII 문자로 구성된 모든 단어
W ASCII 문자로 구성되지 않은 모든 단어, [^a-zA-Z0-9]와 동일
모든 유니코드 공백
S 유니코드가 아닌 공백 문자, w와 S는 다릅니다
d [0-9]에 해당하는 모든 ASCII 값
D ASCII 숫자를 제외한 모든 문자, [^0-9]에 해당
[b] 백스페이스 리터럴(특수 사례)
3. 반복(횟수)
0~1회
1회 이상
* 횟수 제한 없음
{n}n회
{m,n} 최소 m회, 최대 n회
{n,}n회 이상
정규식의 기본 기본값은 탐욕적 일치
[a b ] 등 aaabb를 일치시키려면 ab, aab 등은 일치하지 않고 aaabb만 일치합니다
[a ?b ?] 이는 aaab와 일치합니다. 왜 이런 차이가 있나요?
답변: ? 일반적인 비탐욕 매칭을 만들어 보겠습니다. 그러면 b는 여기서 b 하나만 매칭하는데 왜 3이 매칭되나요? 이는 정규식 패턴 일치가 항상 문자열에서 가능한 첫 번째 일치 위치를 찾기 때문입니다.
4. 옵션 그룹화
|는 ab 또는 cd와 일치할 수 있는 [ab|cd]와 같은 선택적 문자를 구분하는 데 사용됩니다. 참고: : 선택한 항목에 대한 일치 시도 순서는 왼쪽 → 오른쪽입니다. [a|ab], a가 일치하면 ab가 더 잘 일치하더라도 ab는 일치하지 않습니다.
() 1. 개별 항목은 하위 표현식 /java(script)?/로 처리됩니다. javascript 및 java와 일치할 수 있습니다. 즉, 괄호 부분은 하위 표현식을 형성하고 하위 표현식에 대해 | * ? 및 기타 작업을 수행할 수 있습니다. >
2. 전체 패턴에서 하위 패턴을 정의합니다. 후자는 괄호로 묶인 표현식을 참조할 수 있습니다. /(['"])[a-z]1/ 1은 첫 번째 괄호 안의 표현식을 참조하므로 [ '"]3. 뒤에서 이전 하위 표현식을 참조하세요
참고: /['"][a-z]['"]/ 이 정규 표현식은 작은따옴표 또는 큰따옴표와 소문자 및 이전 단일을 의미합니다. 따옴표 또는 큰따옴표가 일치하지 않으며 앞뒤의 작은따옴표와 큰따옴표가 일치하지 않는 경우에는 [(['"])[a-z]1] 와 같이 쓰면 됩니다.
숫자 추가하기 앞의 괄호 안의 표현을 인용해도 됩니다
5. 일치 위치 지정(앵커 포인트)
^ 문자열의 시작과 일치합니다. 여러 줄 검색에서는 줄의 시작과 일치합니다.$ 문자열의 끝과 일치합니다. 여러 줄 검색에서는 줄의 끝과 일치합니다.
b 단어의 경계와 일치합니다. 즉, 문자 w와 W 사이의 위치 또는 문자 w와 문자열의 시작 또는 끝 사이의 위치입니다.
B 비단어 경계 위치와 일치
(?=p) 너비가 0인 전방 예측 어설션에서는 다음 문자가 p와 일치해야 하지만 p와 일치하는 문자는 포함할 수 없습니다.
(?!p) 너비가 0인 부정 예측 어설션에서는 다음 문자가 p와 일치하지 않아야 합니다
6. 수식어
은 정규식 리터럴 오른쪽에 // 작성됩니다.
대소문자를 구분하지 않는 일치를 수행합니다g는 글로벌 일치를 수행합니다. 즉, 첫 번째 일치 항목을 찾은 후 중지하는 대신 모든 일치 항목을 찾습니다.
m 여러 줄 일치 패턴, ^는 줄의 시작과 문자열의 시작과 일치, $는 줄의 끝과 문자열의 끝과 일치 /java$/m은 javanfunc와 일치할 수 있음
참고: 정규 표현식이 전역인 경우 exec() 및 test()가 실행될 때마다 현재 설정된 lastIndex가 현재 위치로 설정되므로 lastIndex 위치부터 실행이 시작됩니다. 실행될 때마다 lastIndex를 0으로 설정하는 것이 가장 좋습니다.
이 기사가 JavaScript 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.